List all the files checked-in in a single cvs commit
Asked Answered
H

5

15

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.

Herriot answered 30/6, 2009 at 20:38 Comment(1)
have seen cvs making 'Commit Identifier', unsure if this is an none standard extenstion or so. And no clue how to use those for anything.Maxantia
M
11

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)

Maxantia answered 30/6, 2009 at 21:2 Comment(4)
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.Abominate
I see cvsps is available through standard Ubuntu repositories. Marking this answer up to say thanks for teaching me about cvsps. :)Abominate
I only know of it's existence more or less, so don't know much of how it worksMaxantia
it works across directories and has a timestamp window of around 10 minutes by default (that can be changed) to deal with differences in timestamps for the same commit. (which means if you have not-very-unique commit comments made close together they might be incorrectly folded into one commit)Boyce
A
3

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.

Abominate answered 30/6, 2009 at 21:2 Comment(0)
B
1

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.

Bebop answered 3/6, 2011 at 17:1 Comment(0)
A
0

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.

Abominate answered 30/6, 2009 at 21:12 Comment(0)
B
0

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

Bowser answered 27/10, 2011 at 9:52 Comment(1)
try once again, if it still does not work please conntact the changelog project member.Bowser

© 2022 - 2024 — McMap. All rights reserved.