CVS: List all files changed between tags (or dates)

Cvs

Cvs Problem Overview


Is there any way to list all the files that have changed between two tags in CVS?

Every time we do a release we apply a tag to all the files in that release. I want to find all the files that changed between releases.

It would also work if I could find all files that had changed between two dates.

Cvs Solutions


Solution 1 - Cvs

I suppose this command would help:

cvs diff -N -c -r RELEASE_1_0 -r RELEASE_1_1 > diffs

where RELEASE_1_0 and RELEASE_1_1 are the names of your tags.

You can find a little more information on cvs diff command here

plus it should be fairly simple to create a script to make report more suitbable for your needs, ex: number of files changed, created deleted etc. As far as I know the most common cvs GUI tools (wincvs and tortoise) do not provide something like this out of the box.

Hope it helps ;)

Solution 2 - Cvs

I prefer using rdiff and -s option

cvs rdiff -s  -r RELEASE_1_0 -r RELEASE_1_1 module > diffs

rdiff does not require a sandbox; -s gives you a summary of the changes.

Solution 3 - Cvs

To get the list of files between two dates using CVS:

cvs diff -N -c -D YYYY-MM-DD -D YYYY-MM-DD | grep "Index:" > diff.out

More information on accepted dates for the -D flag: http://docs.freebsd.org/info/cvs/cvs.info.Common_options.html

Solution 4 - Cvs

To get a list of files that have changed between one version and another using the standard cvs commands:

cvs -q log -NSR -rV-1-0-69::V-1-0-70 2>/dev/null >log.txt

Or alternatively, to get a list of commit comments just drop the -R:

cvs -q log -NS -rV-1-0-69::V-1-0-70 2>/dev/null >log.txt

Where you replace V-1-0-69 and V-1-0-70 with the revisions you're comparing.

Solution 5 - Cvs

cvs log -d ">=DATE" -N -S -R > cvs.log

Solution 6 - Cvs

DLira's method gives a lot of detail, including all the changes.

To just get a list of files, this works:

cvs diff -N -c -r RELEASE_1_0 -r RELEASE_1_1 | grep "Index:" > diffs

Solution 7 - Cvs

The best tool I've found for this is a perl script called cvs2cl.pl. This can generate a change list in several different formats. It has many different options, but I've used the tag-to-tag options like this:

cvs2cl.pl --delta dev_release_1_2_3:dev_release_1_6_8

or

cvs2cl.pl --delta dev_release_1_2_3:HEAD

I have also done comparisons using dates with the same tool.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionroomarooView Question on Stackoverflow
Solution 1 - CvsDecio LiraView Answer on Stackoverflow
Solution 2 - CvsSallyView Answer on Stackoverflow
Solution 3 - CvsMichaelView Answer on Stackoverflow
Solution 4 - CvsTaufiqView Answer on Stackoverflow
Solution 5 - CvstkrilleView Answer on Stackoverflow
Solution 6 - CvsroomarooView Answer on Stackoverflow
Solution 7 - CvsAlex BView Answer on Stackoverflow