【发布时间】:2008-09-26 14:11:44
【问题描述】:
有什么方法可以列出 CVS 中两个标签之间发生变化的所有文件?
每次我们发布一个版本时,我们都会为该版本中的所有文件应用一个标签。我想找到所有版本之间发生变化的文件。
如果我能找到在两个日期之间发生更改的所有文件,它也会起作用。
【问题讨论】:
标签: cvs
有什么方法可以列出 CVS 中两个标签之间发生变化的所有文件?
每次我们发布一个版本时,我们都会为该版本中的所有文件应用一个标签。我想找到所有版本之间发生变化的文件。
如果我能找到在两个日期之间发生更改的所有文件,它也会起作用。
【问题讨论】:
标签: cvs
我想这个命令会有所帮助:
cvs diff -N -c -r RELEASE_1_0 -r RELEASE_1_1 > diffs
其中RELEASE_1_0 和RELEASE_1_1 是您的标签的名称。
你可以找到更多关于 cvs diff 命令here的信息
另外,创建一个脚本以使报告更适合您的需求应该相当简单,例如:更改的文件数量、创建的删除等。据我所知,最常见的 cvs GUI 工具(wincvs 和 tortoise)可以不提供这样的开箱即用的东西。
希望对你有帮助;)
【讨论】:
-N 在 Windows 机器上出现错误:cvs [server aborted]: Cannot use reserved filename 'nul' on NT based machines
我更喜欢使用rdiff 和-s 选项
cvs rdiff -s -r RELEASE_1_0 -r RELEASE_1_1 module > diffs
rdiff 不需要沙箱; -s 为您提供更改摘要。
【讨论】:
使用 CVS 获取两个日期之间的文件列表:
cvs diff -N -c -D YYYY-MM-DD -D YYYY-MM-DD | grep "Index:" > diff.out
有关 -D 标志的接受日期的更多信息:http://docs.freebsd.org/info/cvs/cvs.info.Common_options.html
【讨论】:
使用标准 cvs 命令获取在一个版本和另一个版本之间发生更改的文件列表:
cvs -q log -NSR -rV-1-0-69::V-1-0-70 2>/dev/null >log.txt
或者,要获取提交 cmets 列表,只需删除 -R:
cvs -q log -NS -rV-1-0-69::V-1-0-70 2>/dev/null >log.txt
将V-1-0-69 和V-1-0-70 替换为您要比较的修订版。
【讨论】:
cvs log -d ">=DATE" -N -S -R > cvs.log
【讨论】:
cvs -q log -NSRd ">=2013-10-20"。如果您还想要提交摘要,请删除 R。
DLira 的方法提供了很多细节,包括所有的变化。
仅获取文件列表,这是可行的:
cvs diff -N -c -r RELEASE_1_0 -r RELEASE_1_1 | grep "Index:" > diffs
【讨论】:
我为此找到的最好的工具是一个名为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
我也使用相同的工具使用日期进行了比较。
【讨论】: