3

运行后是否有一种简单的方法来获取冲突摘要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 输出,然后是冲突摘要。

4

2 回答 2

3

鉴于规范,您似乎需要对 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 捕获外壳的任何其他退出。

于 2008-10-04T02:00:55.323 回答
1

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

我似乎记得 C <filename>
如果是这样,您可以使用:

简历更新 | 三通日志 | grep "^C"

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

希望有帮助。

于 2008-09-23T17:06:48.907 回答