views:

882

answers:

3

Hi,

Generally,our fixes/patches for any bugs involves changes in multiple files and we will commit all these files in a single shot.

In SVN, for each commit (may involve multiple files),it will increment revision number of whole repository by one. So, we can easily link all the multiple files that went in a single commit.

Now the difficulty with the same case in CVS is that it will increment the revision numbers of all the files individually. Let's say if a commit involves the following files:

file1.c //revision assigned as part of this commit..1.5.10.2
file2.c //revision assigned as part of this commit..1.41.10.1

and the comment given for this commit is "First Bug Fix".

Now, the only way to get all files checked-in as part of this commit is by searching through all the cvs logs for comment "First Bug Fix" and hopefully it will return only the two file revisions mentioned above.

Please share your views on if there is any better way in CVS to keep track of all files checked-in in a single commit instead of relaying on comment given as part of commit.

+4  A: 

I think CVSps might do what you are looking for.

"CVSps is a program for generating 'patchset' information from a CVS repository. A patchset in this case is defined as a set of changes made to a collection of files, and all committed at the same time (using a single 'cvs commit' command). This information is valuable to seeing the big picture of the evolution of a cvs project. While cvs tracks revision information, it is often difficult to see what changes were committed 'atomically' to the repository."

Joakim Elofsson
Interesting. I wonder what CVSps works from? I wonder if cvsps works across different directories, since the timestamp might be different? Certainly CVSzilla adds a lot of very nice features - it ties into CVSweb and Bugzilla to provide a very rich environment indeed.
the.jxc
I see cvsps is available through standard Ubuntu repositories. Marking this answer up to say thanks for teaching me about cvsps. :)
the.jxc
I only know of it's existence more or less, so don't know much of how it works
Joakim Elofsson
+2  A: 

CVS does not have inherent support for "transactions".

You need some additional glue to do this. Fortunately, this has all been done for you and is available in a very nice extension called "cvszilla".

The home page is here:

http://www.nyetwork.org/wiki/CVSZilla

This also ties in to CVSweb, which is a great way to browse through your CVS modules via a web-based GUI.

the.jxc
your link seems to have an error, should be CVSZilla in it with capital Z
Joakim Elofsson
A: 

OK, I just installed cvsps and ran it from the top level. Here's a sample of the output... this is one of the few hundred patch sets on my module. Note that indeed this does work across different directory trees.

---------------------
PatchSet 221         
Date: 2009/04/22 22:09:37
Author: jlove-ext        
Branch: HEAD             
Tag: LCA_v1_0_0_0_v6     
Log:                     
Bug: 45562               
Check the length of strings in messages. Namely:

  * Logical server IDs cannot be more than 18 characters (forcing a
    TCSE protocol requirement).                                    
  * Overall 'sid' (filter) search string length cannot be more than
    500 (this is actually more than the technical maximum messages are
    allowed, but is close).                                           

Alarm messages and are now not going to crash either as the alarm text
is shortened if necessary by the LCA.                                 

Members: 
        catalogue/extractCmnAlarms.pl:1.2->1.3 
        programs/ldapControlAgent/LcaCommon.h:1.18->1.19 
        programs/ldapControlAgent/LcaUtils.cc:1.20->1.21 
        programs/ldapControlAgent/LcaUtils.h:1.6->1.7    
        programs/ldapControlAgent/LdapSession.cc:1.61->1.62 
        tests/cts-45562.txt:INITIAL->1.1

So, this may indeed do what you want. Nice one, Joakim. However, as mentioned, CVSzilla does much more than this:

  • Web-browsable CVS repositories (via CVSweb).
  • Web-browsable transactions.
  • Supports transactions across modules.
  • Generates CVS commands (using 'cvs -j') to merge patchsets onto other branches.
  • Integration with bugzilla (transactions are automatically registered against bugs).

If all you want is just the patchset info, go with cvsps. If you're looking to use CVS on large projects over a long period of time and are thinking about using bugzilla for your bug-tracking, then I would suggest looking into CVSzilla.

the.jxc