web-dev-qa-db-ja.com

Subversion:受け取った変更の違いを比較する方法は?

受け取った変更を受け入れる前に、同僚が行った変更を確認します。

ステータスを取得することから始めます

svn st -u

...これにより、着信変更があることがわかります

    *     9803   incomingChanges.html
M         9803   localChanges.html
M   *     9803   localAndIncoming.html

私が変更したものを見ることができます

svn diff localChanges.html

...しかし、どのように差分を取ることができますかlocalAndIncoming.html何が変更されたか、そしてそれが私の作業コピーとどのように異なるかを示すには?

19
Andrew

私はあなたが必要とするものは次のとおりであると信じています:

svn diff -rBASE:HEAD
21
joelittlejohn

tortoisesvn (Windowsを使用している場合)

  • ログ画面を呼び出す

  • 最新リビジョンを選択

  • LocalAndIncoming.htmlを右クリックします

  • 作業コピーと比較を選択します

2
Ghislain Hivon

FYI svn diffは、ライブリポジトリのバージョンではなく、.svnディレクトリに保存されている変更されていないファイルに基づいて差分を提供します。

svn updateを実行してSubversionに更新を試み(場合によってはマージも)、次にsvn diffを実行することもできますが、思ったほどきれいではありません。

最後にsvn diffは、リポジトリでの差分のみをサポートしています。例:

svn diff svn://svnserver/repo/localChanges.html -r REV_NO

デフォルトでは、HEAD=と渡されたリビジョンを比較します。

2
Andy

新しいフォルダで別のチェックアウトを実行します。

cd ..
svn checkout  /path/to/repo clean_working_copy

Clean_working_copyを再利用する場合は、前に更新することを忘れないでください

svn update clean_working_copy

次に、ファイルをclean_working_copyのファイルと比較します。

diff your_working_copy/localAndIncoming.html clean_working_copy/localAndIncoming.html

または、好みの3ウェイdiffを使用します(私はkdiff3です)

kdiff3 --L1 Base --L2 theirs --L3 mine your_working_copy/.svn/text-base/localAndIncoming.html clean_working_copy/localAndIncoming.html your_working_copy/localAndIncoming.html
0
Ghislain Hivon

おもう

svn diff -r HEAD

ほとんどあなたが欲しいものを与えます。唯一のことは、+と-が予想とは逆になっていることです。

0
Confusion

新しいバージョンを実際にダウンロードするまで、実際にはできません。このような制限は、新しいタイプのソース管理が最近普及した大きな理由の1つでした。これは、分散型ソース管理と呼ばれます。
この新しいフォームを使用すると、独自のローカルリポジトリが作成され、メインリポジトリから変更を取得して差分を実行できます。変更が気に入らない場合は、独自のリポジトリを元に戻して、そこから。

http://Mercurial.selenic.com/

そして、ええ、私はあなたが製品を切り替えることは最適なソリューションではないことを示唆していますが、それでもなおソリューションです。

0
Daisetsu