代码之家  ›  专栏  ›  技术社区  ›  Alex B

在命令行上进行cvs更新时,如何获取cvs冲突的摘要?

  •  3
  • Alex B  · 技术社区  · 16 年前

    在运行 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输出发生时输出它,然后输出冲突摘要。

    2 回复  |  直到 16 年前
        1
  •  3
  •   Jonathan Leffler    16 年前

    考虑到规范,您似乎需要对MartinYork的解决方案稍作修改(因为这只显示冲突,而不显示正常的日志信息)。像这样的-可能被称为“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
    

    trap命令确保日志文件不被保留。它捕捉到正常的信号——hup、int、quit、pipe和term(分别)以及0捕捉到外壳的任何其他出口。

        2
  •  0
  •   Loki Astari    16 年前

    我没有方便的cvs,cvs更新输出的确切格式是什么

    我似乎记得C<文件名>
    如果可以,您可以使用:

    cvs更新tee日志grep“^c”

    cvs的完整输出保存到日志中,以便在另一个点上使用。 那我们就各行各业了 开始 用“C”

    希望有帮助。