RE: branch removal question

2004-06-23 Thread Don Butts
Title: branch removal question



I 
asked this question last Friday but got no response.
Was it 
poorly asked, not enough information, too
ignorant for words? If I need to supply more 
information
please 
let me know, I would be glad to.

 Thanks,

 Don 
Butts

  -Original Message-From: Don Butts 
  [mailto:[EMAIL PROTECTED]Sent: Friday, June 18, 2004 9:45 
  AMTo: [EMAIL PROTECTED]Subject: branch removal 
  question
  We are using cvs in somewhat of a non-standard way. 
  We have a production cut of our compiled source that 
  we deploy via cvs using a production branch. The 
  application does not mind the fact the CVS control 
  files co-exist within the source and the application 
  runs fine. When we want to patch production we first 
  patch the same branch in a different checkout area and 
  then commit it. When it comes time to upgrade 
  the production area we bring down the application 
  during a maintenance window and perform a cvs update 
  in the production area. This has worked great 
  for more than a year so I am very happy with this 
  process. We were basically mimicking this 
  process in a pre-production area for QA purposes and 
  while this has worked OK we are having a bit of 
  trouble keeping these two branches in sync. 
  So, I know that I can remove a branch via the cvs admin -n command and I am wondering if a better process would be to remove the preprod branch every time 
  I move a new patch to production and when it comes 
  time to test the next patch just recreate the preprod 
  branch off of the current prod branch. I have 
  performed some tests using this method and all seems 
  to work fine but I thought that I would ask the 
  opinion of those who have been using CVS a lot longer 
  than I. 
   Thank you for your 
  time, 
   
   Don Butts 

___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


RE: branch removal question

2004-06-23 Thread Jim.Hyslop
Don Butts wrote:
 I asked this question last Friday but got no response.
 Was it poorly asked, not enough information, too ignorant for 
 words?
How about, this requires a few more brain cycles than were available at the
time? :=)

   -Original Message-
   We are using cvs in somewhat of a non-standard way. 
   We have a production cut of our compiled source that 
   we deploy via cvs using a production branch.  The 
   application does not mind the fact the CVS control 
   files co-exist within the source and the application 
   runs fine. When we want to patch production we first 
   patch the same branch in a different checkout area and 
   then commit it.  When it comes time to upgrade the 
   production area we bring down the application during a 
   maintenance window and perform a cvs update in the 
   production area.  This has worked great for more than a 
   year so I am very happy with this process.  We were 
   basically mimicking this process in a pre-production area 
   for QA purposes and while this has worked OK we are 
   having a bit of trouble keeping these two branches in 
   sync.  So,  I know that I can remove a branch via the 
   cvs admin -n command and I am wondering if a better 
   process would be to remove the preprod branch every time 
   I move a new patch to production and when it comes time 
   to test the next patch just recreate the preprod branch 
   off of the current prod branch.  I have performed some 
   tests using this method and all seems to work fine but 
   I thought that I would ask the opinion of those who have 
   been using CVS a lot longer than I. 
I wouldn't remove the branches. I'm always reluctant to remove anything from
the history.

Instead of checking out branches, it might be easier to apply non-branch
tags instead. This means fewer branches to deal with. I'm guessing the
reason you're using a branch is because the update command remains the same,
e.g. cvs update -r PROD (where PROD is a branch tag).

Basically, what you would do is to create a non-branch tag indicating the
currently-tested and working version, e.g. cvs tag REL_2_0_2. Then, you can
move the PRODUCTION tag using the -F option to tag.

Let me know if I'm not being clear (I haven't had my morning coffee yet ;-)

-- 
Jim Hyslop
Senior Software Designer
Leitch Technology International Inc. (http://www.leitch.com)
Columnist, C/C++ Users Journal (http://www.cuj.com/experts)


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


Re: branch removal question

2004-06-23 Thread Todd Denniston

 Don Butts wrote:
 
 Content-Type: multipart/mixed; boundary1243246784==
Please do not send MIME and/or HTML encrypted messages to the list.
Plain text only, PLEASE!


 We are using cvs in somewhat of a non-standard way.
 We have a production cut of our compiled source that
 we deploy via cvs using a production branch.  The
 application does not mind the fact the CVS control
 files co-exist within the source and the application
 runs fine. When we want to patch production we first
 patch the same branch in a different checkout area and
 then commit it.  
Confused, one or 2 CVSROOTs? do you mean `patch  patchfile` or `cvs update
-jsomething -jsomethingelse` (generally called a merge)

 When it comes time to upgrade the
 production area we bring down the application during a
 maintenance window and perform a cvs update in the
 production area.  This has worked great for more than a
 year so I am very happy with this process.  We were
 basically mimicking this process in a pre-production area
 for QA purposes and while this has worked OK we are
 having a bit of trouble keeping these two branches in
 sync.  So,  I know that I can remove a branch via the
 cvs admin -n command and I am wondering if a better
 process would be to remove the preprod branch every time
Why remove it? You loose history when you remove things (actually delete
information from repo files), which is pretty much against having a version
control system in the first place.

why not create preprod`date +%Y_%b_%d` branches when you want to go into QA,
so you have all the information that lead up to each release.

(next question is a more personal process, not general practice) and why are
the production releases not just (normal) tags on the QA branch(es), where the
QA people have said this set of files is correct for release.? Of course you
_might_ want to branch at that normal tag too if you need to do several fixes
to the released version and then merge back to that QA branch when the fixes
are ready to be QAed.

 I move a new patch to production and when it comes time
 to test the next patch just recreate the preprod branch
 off of the current prod branch. I have performed some
 tests using this method and all seems to work fine but
 I thought that I would ask the opinion of those who have
 been using CVS a lot longer than I.
 
 Thank you for your time,
 
 Don Butts

-- 
Todd Denniston
Crane Division, Naval Surface Warfare Center (NSWC Crane) 
Harnessing the Power of Technology for the Warfighter


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


RE: branch removal question

2004-06-23 Thread Paul Sander
Normally one would apply a tag to the versions that are ready for testing,
and update the tag as bugs are fixed.  Then apply a second tag to the
code that reaches production quality.  To apply the second tag, use the
cvs rtag -r option.

The bummer with this is that if you make bug fixes in your test environment,
you must run an additional cvs update command on each modified file due
to stickiness issues in with the tags, but it's a minor annoyance that's
overcome with experience.  And you must remember to apply the testing
tag to the committed fixes, a part of the process that might easily be
forgotten.

--- Forwarded mail from [EMAIL PROTECTED]

I asked this question last Friday but got no response.
Was it poorly asked, not enough information, too
ignorant for words?  If I need to supply more information
please let me know, I would be glad to.

-Original Message-
From: Don Butts [mailto:[EMAIL PROTECTED]
Sent: Friday, June 18, 2004 9:45 AM
To: [EMAIL PROTECTED]
Subject: branch removal question

We are using cvs in somewhat of a non-standard way. 
We have a production cut of our compiled source that 
we deploy via cvs using a production branch.  The 
application does not mind the fact the CVS control 
files co-exist within the source and the application 
runs fine. When we want to patch production we first 
patch the same branch in a different checkout area and 
then commit it.  When it comes time to upgrade the 
production area we bring down the application during a 
maintenance window and perform a cvs update in the 
production area.  This has worked great for more than a 
year so I am very happy with this process.  We were 
basically mimicking this process in a pre-production area 
for QA purposes and while this has worked OK we are 
having a bit of trouble keeping these two branches in 
sync.  So,  I know that I can remove a branch via the 
cvs admin -n command and I am wondering if a better 
process would be to remove the preprod branch every time 
I move a new patch to production and when it comes time 
to test the next patch just recreate the preprod branch 
off of the current prod branch.  I have performed some 
tests using this method and all seems to work fine but 
I thought that I would ask the opinion of those who have 
been using CVS a lot longer than I. 

--- End of forwarded message from [EMAIL PROTECTED]



___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


RE: branch removal question

2004-06-23 Thread Paul Sander
--- Forwarded mail from [EMAIL PROTECTED]

Don Butts wrote:
 I asked this question last Friday but got no response.
 Was it poorly asked, not enough information, too ignorant for 
 words?

I wouldn't remove the branches. I'm always reluctant to remove anything from
the history.

Instead of checking out branches, it might be easier to apply non-branch
tags instead. This means fewer branches to deal with. I'm guessing the
reason you're using a branch is because the update command remains the same,
e.g. cvs update -r PROD (where PROD is a branch tag).

Basically, what you would do is to create a non-branch tag indicating the
currently-tested and working version, e.g. cvs tag REL_2_0_2. Then, you can
move the PRODUCTION tag using the -F option to tag.

Floating tags can also be used.  For example, create a tag called
PRODUCTION and apply it to the next release.  Then just run cvs update
in the production area, and the proper versions will appear.

The down side to this is that if you don't apply unique tags in addition
to the floating one, you can't go back if something breaks.

--- End of forwarded message from [EMAIL PROTECTED]



___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


RE: branch removal question

2004-06-23 Thread Jim.Hyslop
[EMAIL PROTECTED] wrote:
 Floating tags can also be used.  For example, create a tag 
 called PRODUCTION and apply it to the next release.  Then 
 just run cvs update
 in the production area, and the proper versions will appear.
Yep, that's basically the idea I was trying to get across.

 The down side to this is that if you don't apply unique tags 
 in addition to the floating one, you can't go back if 
 something breaks.
Yes, that's a very important point. 

So, to summarize, I think we're in agreement in recommending this procedure:

There are two floating tags. For discussion's sake, I will call them:
QA_VERSION
PRODUCTION

The tag QA_VERSION is applied to a version that is ready to go to QA. The
tag PRODUCTION is applied to a version that is ready to go into production.

When a version is ready for QA, a unique tag is applied. I usually recommend
that the tag incorporates the version number and build number, e.g. for rev.
2.1 build 17 of a project named PROJECT, the tag might look like
PROJECT_2_1_17. The QA_VERSION tag is applied to that version, using:

cvs rtag -rPROJECT_2_1_17 -Ff QA_VERSION project
(or, if you prefer, 'cvs tag -rPROJECT_2_1_17 -Ff QA_VERSION' )

When the QA version is ready for production, then the production tag is
applied, using:
cvs rtag -rQA_VERSION -F PRODUCTION project

During the maintenance window, the QA version is promoted to production by
simply issuing a 'cvs update -dP' command.

Don, feel free to disagree or to point out anything we may have missed ;-)

-- 
Jim Hyslop
Senior Software Designer
Leitch Technology International Inc. (http://www.leitch.com)
Columnist, C/C++ Users Journal (http://www.cuj.com/experts)


___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs


branch removal question

2004-06-18 Thread Don Butts
Title: branch removal question






We are using cvs in somewhat of a non-standard way.
We have a production cut of our compiled source that
we deploy via cvs using a production branch. The
application does not mind the fact the CVS control
files co-exist within the source and the application
runs fine. When we want to patch production we first
patch the same branch in a different checkout area and
then commit it. When it comes time to upgrade the
production area we bring down the application during a
maintenance window and perform a cvs update in the
production area. This has worked great for more than a
year so I am very happy with this process. We were
basically mimicking this process in a pre-production area
for QA purposes and while this has worked OK we are
having a bit of trouble keeping these two branches in
sync. So, I know that I can remove a branch via the
cvs admin -n command and I am wondering if a better
process would be to remove the preprod branch every time
I move a new patch to production and when it comes time
to test the next patch just recreate the preprod branch
off of the current prod branch. I have performed some
tests using this method and all seems to work fine but
I thought that I would ask the opinion of those who have
been using CVS a lot longer than I.


 Thank you for your time,



  Don Butts



___
Info-cvs mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/info-cvs