[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: How to determine what tag a branch was based on?

From: Jim.Hyslop
Subject: RE: How to determine what tag a branch was based on?
Date: Tue, 3 Feb 2004 15:15:29 -0500

Dickson, Craig wrote:
> Here is the scenario: 
> Sometime in the past I created a Branch based on a tag that 
> existed on the files on my main branch. Now I need to go back 
> and find out exactly which tag was used as the base of the branch.
> Is there a way to determine this conclusively? Our problem is 
> that there has been many tags applies since the branch was 
> created so the "base" files now have multiple tags on them.
Step 1) Implement a new rule, effective immediately: all branch tag names
must clearly indicate the non-branch tag from which they are created. One
easy way to do this is to adopt a convention that branch tags use the
non-branch tag name, with a "-bt" suffix, e.g.:

cvs tag whatever
cvs tag -rwhatever -b whatever-bt

Step 2: Prepare for a long session. It can be done, but I don't think it
will be easy.
1) Issue the command "cvs status -v>taglist.txt"
2) Open the file in your favourite text editor
Look at the "Existing Tags" section for the first file; it may look
something like this:
   Existing Tags:
        branch_from_branch              (branch:
        testing                         (revision: 1.2)
        TestOnDeleted                   (revision: 1.1)
        abranch                         (branch: 1.1.2)
        theHead                         (revision: 1.2)
        release_tag                     (revision:
        vendor_tag                      (branch: 1.1.1)
        tag3                            (revision: 1.1)
        tag2                            (revision: 1.1)
        atag                            (revision: 1.1)

Suppose you're trying to find the branch point for "abranch". Looking at the
above, you know that - for this file - abranch is based on 1.1. Make a list
of other tags for this file that are applied to 1.1 - in this case, we have
TestOnDeleted, tag3, tag2, and atag.

Now, go through each remaining entry. Here's the next one in my list:

File: file2             Status: Up-to-date

   Working revision:    2.2
   Repository revision: 2.2     /cvs/cvs-test/jhyslop/file2,v
   Sticky Tag:          (none)
   Sticky Date:         (none)
   Sticky Options:      (none)

   Existing Tags:
        branch_from_branch              (branch: 1.1.4)
        testing                         (revision: 1.1)
        TestOnDeleted                   (revision: 1.5)
        abranch                         (branch: 1.1.2)
        theHead                         (revision: 1.5)
        release_tag                     (revision:
        vendor_tag                      (branch: 1.1.1)
        tag3                            (revision: 1.1)
        tag2                            (revision: 1.1)
        atag                            (revision: 1.1)

Again, for this file, the branch point is 1.1. The tag TestOnDeleted is
applied to 1.5, so you can cross that tag off the list of candidates,
leaving tag3, tag2, and atag.

Repeat this process until you have only one candidate left, or you have
examined all the files in the project. If you have multiple candidates after
examining all the files, then it doesn't matter - the tags are identical.
Pick one.

Jim Hyslop 
Senior Software Designer 
Leitch Technology International Inc. (<>) 
Columnist, C/C++ Users Journal (<>) 

reply via email to

[Prev in Thread] Current Thread [Next in Thread]