4

サブバージョンに「競合が発生しない限り更新/マージ」する方法はありますか?

--dry-run/を使用して更新を実行する前に確認できることは知っていますがstatus -u、「C index.php」行に気付かないため、他の人が更新を実行して壊れた Web ページを取得することがよくあります。

また、svn は競合についてあまり不満を感じていないように見えることにも気付きました。競合に関係なく、「リビジョンに更新されました」と表示され、ゼロで終了します。そのため、行ごとの出力を解析してそれらを発見する必要があります。確かにもっと良い方法がありますか?

4

6 に答える 6

3

--accept パラメータを使用して、競合が発生したときに何が起こるべきかを示すことができます。

--accept ARG             : specify automatic conflict resolution action
                          ('postpone', 'base', 'mine-full', 'theirs-full',
                          'edit', 'launch')

svnbookのインタラクティブな競合解決ページも参照してください。

于 2008-10-02T22:46:26.557 に答える
1

おそらく、グラフィカルツールを使用する方が良いでしょうか? または、出力をファイルにリダイレクトし、最後に「cat svnupdate.log | grep "^C "」を実行して競合を表示する更新を行うスクリプトを作成しますか?

私が使用しているグラフィカル ツール (TortoiseSVN と Netbeans) を使用すると、最後に厄介なノイズが発生し、それらを処理するためのマージ選択ダイアログが表示されます。コマンドラインツールにこれほど強力な同等のものは知りません。

于 2008-08-28T21:51:18.140 に答える
1

@jsight: TortoiseSVN は素晴らしいですが、私は主に X を使用せずに *NIX 環境で開発しています。

あなたのスクリプトの提案に関して、それが私が今取り組んでいることです。現在、「ファイルへの出力」をスキップしてパイプを使用していますが、それ以外はあなたが説明したとおりです。

于 2008-08-28T22:01:21.703 に答える
1

--diff3-cmd パラメータを使用して、使用するマージ ツール (通常は diffutils の diff3) を指定できます。

于 2008-08-28T23:33:34.150 に答える
0

pre-commit スクリプトを使用して、ファイル内の競合マーカーを探し、それらが存在する場合にコミットを防止することもできます。

于 2008-09-30T10:39:49.253 に答える
0

Subversion 1.5 (最近リリースされた) では、"--accept" 引数を使用して、更新の競合中に何が起こるかを指定する機能が追加されています。

于 2008-10-02T23:24:29.243 に答える