2

シナリオは次のとおりです。

ユーザー1

  1. ブランチ/Xを作成します
  2. svnチェックアウトブランチ/Xからローカルマシンへ
  3. file.txtを変更する
  4. 変更をコミットする

別のユーザー、ユーザー2

  1. ブランチを作成/Y
  2. svn checkout branchs/Yを彼のローカルマシンに
  3. branchs / Xをローカルマシンにマージします(したがって、file.txtをbranchs / Yにマージします)
  4. svn diffを使用して、変更をコミットする前に、branchs/Yのローカルコピーのfile.txtへの変更が成功したことを確認します。

svn diffはローカルの作業コピーをURLの作業コピーと比較できないため、ユーザー2のステップ4は、最初にブランチ/Yに変更をコミットしないと実行できません。ただし、これにより、マージの変更をコミットする前に、マージによって正しい結果が生成されたことを確認するという目的全体が無効になります。

私はこれをグーグルで検索しましたが、使用可能な解決策は見つかりませんでした。唯一推奨される解決策は、svnが2つのパスを比較できるようにbranchs/Xをチェックアウトすることです。マージの変更はまだチェックインされていないため、2つのURLでsvndiffを使用することはできません。

時間と手間がかかることは言うまでもなく、diffを実行できるようにするためだけにbranchs/Xとbranchs/Yの両方をチェックアウトすることは実用的ではありません。

まだコミットされていないローカル作業コピーのマージされた変更を、マージブランチの変更と比較する方法はありますか?

4

1 に答える 1

7

Johan Corveleyn が答えを教えてくれました。他の人が答えを見ることができるように、ここに投稿します。

svn diff は実際に、ローカル パス上の作業コピー ファイルをリポジトリ内の別のバージョンと比較できるため、URL 経由で参照できます。以下は構文です。

svn diff --old=http://repository/branches/X/file.txt --new=file.txt
于 2012-06-29T21:29:00.170 に答える