【问题标题】:CVS: List all files changed between tags (or dates)CVS:列出标签(或日期)之间更改的所有文件
【发布时间】:2008-09-26 14:11:44
【问题描述】:

有什么方法可以列出 CVS 中两个标签之间发生变化的所有文件?

每次我们发布一个版本时,我们都会为该版本中的所有文件应用一个标签。我想找到所有版本之间发生变化的文件。

如果我能找到在两个日期之间发生更改的所有文件,它也会起作用。

【问题讨论】:

    标签: cvs


    【解决方案1】:

    我想这个命令会有所帮助:

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

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

    你可以找到更多关于 cvs diff 命令here的信息

    另外,创建一个脚本以使报告更适合您的需求应该相当简单,例如:更改的文件数量、创建的删除等。据我所知,最常见的 cvs GUI 工具(wincvs 和 tortoise)可以不提供这样的开箱即用的东西。

    希望对你有帮助;)

    【讨论】:

    • 有一个名为 cvs2cl 的 perl 脚本,它可以生成格式良好的日志版本,既可以作为完成的报告,也可以作为文本或 XML 进行后处理:red-bean.com/cvs2cl
    • 刚刚通过谷歌找到了这个,它为我节省了很多工作,非常感谢!我试图通过“历史”命令找出答案,忘记了差异。
    • -N 在 Windows 机器上出现错误:cvs [server aborted]: Cannot use reserved filename 'nul' on NT based machines
    【解决方案2】:

    我更喜欢使用rdiff-s 选项

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

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

    【讨论】:

    • 我在这里尝试了大多数其他选项,而其他选项我无法捕捉到所有的变化。谢谢!
    • 这个不错。 'cvs rdiff -s -rvxxxxx -rHEAD module 2>/dev/null' 给出一个摘要“文件 (更改自|是新的)......”
    【解决方案3】:

    使用 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

    【讨论】:

      【解决方案4】:

      使用标准 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-69V-1-0-70 替换为您要比较的修订版。

      【讨论】:

      • 最后一个命令是我要找的:) 只是添加了一点 grep 来过滤掉我不想要的行: grep -vE "^branch|^RCS|^head|^locks |^access|^keyword|^total|^description|^revision"
      • 这对文件更改很有用。相同的标志适用于 cvs rlog。您可以使用 'cvs -q log -NS -rvxxxx::' 显示自上次标记以来的更改,这很方便。对于在标签之后添加的文件,您会收到“警告:无修订”,并且不会显示 cvs add 或 commit cmets。
      【解决方案5】:
      cvs log -d ">=DATE" -N -S -R > cvs.log
      

      【讨论】:

      • 示例cvs -q log -NSRd ">=2013-10-20"。如果您还想要提交摘要,请删除 R
      【解决方案6】:

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

      仅获取文件列表,这是可行的:

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

      【讨论】:

      • 对不起,我忘了评论冗长以及如何得到你想要的。但你是对的! grep 是只获取所需内容的好方法。 ;)
      【解决方案7】:

      我为此找到的最好的工具是一个名为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
      

      我也使用相同的工具使用日期进行了比较。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-09
        • 2013-07-05
        相关资源
        最近更新 更多