[cvsnt] Branching/Tagging Best Practices

Arthur Barrett arthur.barrett at march-hare.com
Fri May 16 22:26:12 BST 2008


> I don't understand what you mean by "user defined 
> changesets".  Can you 
> please explain what these are and how I am supposed to use them?

An 'automatic changeset' (what SVN and many SCM tools call 'atomic
commits') is an ID that is generated and applied to ALL the files in a
commit.  The reason SVN calls these 'atomic' is that if the commit fails
you can use the generated id to 'roll back' the partially committed set.
SCM systems that use Oracle/MSSQL like ClearCase, CMSynergy, Dimensions
and our own EVSCM (previously known as CVSNT v3) support 'real' atomic
transactions which are automatically rolled out if there is a problem
with transmission/reception during commit.

A 'user defined changeset' (what CVSNT calls BUG IDs) is the same as an
automatic changeset, but can traverse multiple commits as well as
multiple files.  So you end up with 'user defined change set' 1001 as:
* Hello.c revisions 1.2-1.9
* Hello.h revisions 1.2-1.3

You can then use the changeset with merge to merge a changeset from one
branch to another rather than merging the entire branch.  So if you have
branch dev_1 and also branch dev_2 and you want to port a bug fix from
release 1 to release 2 you can use:

  cvs co -r dev_2 hello
  cd hello
  cvs up -j dev_1 -B 1001 
  cvs ci -B 1001 -m "Merged bug 1001 to rel 2"

Other changes will not be included (unless they are dependant).



More information about the cvsnt mailing list