2008-09-26 106 views
52

有什么方法可以列出CVS中两个标签之间已更改的所有文件?CVS:列出标签(或日期)之间更改的所有文件

每次我们发布一个版本时,我们都会在该版本的所有文件上应用一个标签。我想查找所有发布版本之间更改的文件。

如果我能找到在两个日期之间改变的所有文件,它也可以工作。

回答

31

我想这个命令将帮助:

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

其中RELEASE_1_0RELEASE_1_1是你的标签的名称。

你可以找到关于CVS diff命令here

多一点信息,再加上它应该是相当简单的创建一个脚本,使报告满足您的需求更suitbable,例如:文件的数量改变,删除创建等据我所知,最常用的cvs GUI工具(wincvs和tortoise)不提供这种开箱即用的东西。

希望它可以帮助;)

+2

有能产生一个perl脚本调用cvs2cl不错的格式化日志版本,无论是作为完成的报告,还是作为文本或XML后处理:http://www.red-bean.com/cvs2cl/ – 2008-09-26 14:35:46

+0

刚刚通过谷歌发现这一点,它为我节省了大量工作,非常感谢! 我试图通过'历史'命令找出,忘记差异。 – 2008-11-12 20:35:45

+0

`-N`在Windows机器上给出错误:`cvs [server aborted]:无法在基于NT的机器上使用保留文件名'nul' – 2017-01-10 09:33:44

4

DLira的方法给出了很多细节,包括所有的变化。

只得到文件列表,这个工程:

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

抱歉,我忘记评论详细程度以及如何得到您想要的内容。但你是对的! grep是一种很好的方式来获得你所需要的。 ;) – 2008-09-26 16:28:29

1

的最佳工具,我发现这是一个名为cvs2cl.pl一个perl脚本。这可以生成几种不同格式的更改列表。它有很多不同的选择,但我使用的标签 - 标签选项是这样的:

cvs2cl.pl --delta dev_release_1_2_3:dev_release_1_6_8 

cvs2cl.pl --delta dev_release_1_2_3:HEAD 

我也做用相同的工具日期比较。

23

我更喜欢使用rdiff-s选项

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

rdiff不需要沙箱; -s为您提供了所做更改的摘要。

+0

我在这里尝试了大多数其他的选择,并与其他人一起,我无法捕捉到所有的变化。谢谢! – Victor 2012-08-30 20:57:45

11

得到执行过一个版本和另一个改变使用标准CVS命令文件的列表:

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

或者,让犯评论列表刚落-R

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

如果您将V-1-0-69V-1-0-70替换为您正在比较的修订版本。

7
cvs log -d ">=DATE" -N -S -R > cvs.log 
相关问题