Naga Kiran
Naga Kiran

Reputation: 8745

List all the files checked-in in a single cvs commit

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.

Upvotes: 15

Views: 9732

Answers (5)

Joakim Elofsson
Joakim Elofsson

Reputation: 38216

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."

This cvsps relies on cvs client. Make sure you have proper version of cvs which supports rlog command (1.1.1)

Upvotes: 11

Marcin Sanecki
Marcin Sanecki

Reputation: 1334

This also could be useful: http://code.google.com/a/eclipselabs.org/p/changelog/

Upvotes: 0

gaga
gaga

Reputation: 11

Perhaps the ANT CvsChangeLog Task is another choice. See http://ant.apache.org/manual/Tasks/changelog.html . It provides date and time for a checkin message. You can produce nice reports with XSLT - try the example at the bottom of the ANT manual page.

I know it's late for an answer, but perhaps other users come across this like I did (searching) and appreciate the ANT integration.

Upvotes: 1

the.jxc
the.jxc

Reputation: 3461

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.

Upvotes: 3

the.jxc
the.jxc

Reputation: 3461

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.

Upvotes: 0

Related Questions