0

すべて

私はファイルを1行ずつ読んでいます。各行は、特定のリポジトリパスを持つsvnupdateコマンドです。私のコードは次のようになります:

    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

これによりループが終了し、その後のコマンドは実行および記録されません。私の最初の手がかりは、表示エラー(stdinを読み取れない)が、おそらく両方がstdinを共有しているという理由で、行の読み取りプロセスをクラッシュさせることです。この終了を回避する方法について何かアイデアはありますか?

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')

したがって、$ svn up --accept tfは「彼ら」からのすべての変更を受け入れます。

于 2012-06-08T19:58:55.417 に答える