0

全部

我正在逐行读取文件。每行都是一个带有特定存储库路径的 svn update 命令。我的代码如下所示:

    while read line
    do
        eval $line 2> /tmp/outputfile            
        egrep -e "svn: Target path .* does not exist" /tmp/outputfile > /dev/null && echo $line >> /tmp/result
    done < $SVN_TMP_FILE

基本上我想记录查找过时目录的命令。

但是在 while 循环期间可能会发生冲突,在提示符中显示以下内容:

Conflict discovered in 'blablabla'.
Select: (p) postpone, (df) diff-full, (e) edit,
    (mc) mine-conflict, (tc) theirs-conflict,
    (s) show all options: svn: Can't read stdin: End of file found

它终止循环,此后的命令将不会被执行和记录。我的第一个线索是显示错误(无法读取标准输入)会导致读取行的过程崩溃,因为两者可能共享标准输入。关于如何避免这种终止的任何想法?

4

1 回答 1

0

您可以将冲突解决指定为更新命令的一部分。摘自 $ svn help update

 --accept ARG             : specify automatic conflict resolution action
                            ('postpone', 'working', 'base', 'mine-conflict',
                            'theirs-conflict', 'mine-full', 'theirs-full',
                            'edit', 'launch')
                            (shorthand: 'p', 'mc', 'tc', 'mf', 'tf', 'e', 'l')

所以 a$ svn up --accept tf会接受来自“他们的”的所有更改。

于 2012-06-08T19:58:55.417 回答