【问题标题】:How can I get a summary of my cvs conflicts when doing a cvs update on the command line?在命令行上进行 cvs 更新时,如何获得 cvs 冲突的摘要?
【发布时间】:2010-09-12 10:42:23
【问题描述】:

在运行cvs update 后,是否有一种简单的方法可以获取冲突摘要?

我从事一个大型项目,在完成一些工作后,我需要进行更新。从 cvs update 命令返回的更改列表有几页长,我只想查看在 cvs update 命令输出末尾重复的冲突列表(以“C”开头)。

解决方案需要从命令行运行。

如果我的正常输出是:

M src/file1.txt
M src/file2.txt
cvs server: conflicts found ...
C src/file3.txt
M src/file4.txt
M src/file5.txt

我希望我的新输出是:

M src/file1.txt
M src/file2.txt
cvs server: conflicts found ...
C src/file3.txt
M src/file4.txt
M src/file5.txt

Conflict Summary:
C src/file3.txt

我希望这是一个单一的命令(可能是一个简短的脚本或别名),它会在发生正常 cvs 输出时输出正常的 cvs 输出,然后是冲突摘要。

【问题讨论】:

    标签: version-control command-line merge cvs conflict


    【解决方案1】:

    鉴于规范,您似乎需要对 Martin York 的解决方案进行微调(因为它只显示冲突而不是正常的日志信息)。像这样的东西 - 可能被称为“cvsupd”:

    tmp=${TMPDIR:-/tmp}/cvsupd.$$
    trap "rm -f $tmp; exit 1" 0 1 2 3 13 15
    cvs update "$@" | tee $tmp
    if grep -s '^C' $tmp
    then
        echo
        echo Conflict Summary:
        grep '^C' $tmp
    fi
    rm -f $tmp
    trap 0
    exit 0
    

    陷阱命令确保日志文件不会被遗漏。它捕获正常信号 - HUP、INT、QUIT、PIPE 和 TERM(分别)并且 0 捕获任何其他从 shell 退出。

    【讨论】:

      【解决方案2】:

      我手边没有 cvs cvs update 输出的确切格式是什么

      我好像记得 C
      如果是这样,您可以使用:

      cvs 更新 |三通日志 | grep "^C"

      cvs 的完整输出被保存到日志中以供其他时间使用。 然后我们用 'C' 查找所有 开始 的行

      希望对您有所帮助。

      【讨论】:

      • 简单易用。谢谢
      猜你喜欢
      • 2013-01-02
      • 1970-01-01
      • 1970-01-01
      • 2012-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多