web-dev-qa-db-ja.com

SVN:作業コピーとリポジトリリビジョンを比較する方法

変更、追加などされたファイルのリストのみを表示したい、コンテンツではなくsvn diffが出力する)、svn statusなどのファイルのリストのみが表示されます。

svn diff -r HEADは大量の情報をダンプしますが、すぐに理解するのは困難です。

svn statusは、作業コピーをローカルの元のバージョンと比較した変更のみを表示します(リポジトリリビジョンとは表示しません)。

svn update--dry-runをサポートしていません

簡単に言うと、svn statusのようなものが必要ですが、 現在の作業コピーをリポジトリのリビジョンと比較します (HEADリビジョン)と比較します。

SVNマニュアルに目を通しましたが、残念なことに何も助けになりませんでした:-/

26
Azat

試して

svn status --show-updates

-u--show-updates(またはsvn status)オプションは、svnがリポジトリに接続し、リポジトリで変更されたものを表示するようにします-それで十分ですか?必要に応じて、-qまたは--verboseフラグも必要になる場合があります。

43
nos
svn diff -r head

これにより、作業コピーとリポジトリ間で異なるすべてのファイルのdiffリストが生成され、ファイルのリストと実際の変更が提供されます。あなたが言うように、これは理解するのが難しい場合があります。

だからこれを試してください:

svn diff -r head --diff-cmd meld

これは同じことを行いますが、meld(他の視覚的な差分ツールを兵器庫に提供できます)を使用して変更を表示します。

しかし、真剣に、これらのdiff出力は他の多くの事柄(たとえばパッチ)の基礎を形成し、Linuxの世界では避けるのがかなり難しいので、それらのdiff出力を読むことに慣れてください。出力を削減するには:

svn status -u 

変更されたファイルのリストが表示され、その後:

svn diff <file> -r head --diff-cmd <tool>

興味のある特定のファイルだけの視覚的な違いを提供します。

25
kdopen

元の質問の言い方をすれば、正しい答えはすでに示したsvn status -uです。フォローアップのコメントに基づいて、svn diff --summarizeにも注意する必要があります。これは、2つのリポジトリリビジョンまたは2つのタグまたはリポジトリ内の何かを比較するために使用するものです。このオプションを使用して、作業コピーとリポジトリを比較することはできません(ステータスはそれを行います)。

参照: http://blogs.collab.net/Subversion/2007/03/computing_the_d/

2
Mark Phippard

op:

変更、追加などされたファイルのリストのみを表示し、コンテンツ(svn diffが出力する)ではなく、svn statusなどのファイルのリストのみを表示したいのです。

OPのように、最新のトランクに対して大きなsvnリポジトリの下にネストされているプロジェクトブランチの現在の作業コピーの「svn status」スタイルのレポートを見たいと思います。svndiffが使用するのと同じパスとリビジョン引数を使用したいです。

以下はそれを行います:

svn diff --old . --new ^/pathToProject/trunk --summarize

もちろん、「pathToTrunk」をリポジトリが使用する実際のパスに置き換えます。

1
Lonnie

これが私がしたことで、私の問題を解決しました。作業コピーとレポジトリのコピーの違いを知りたいです。

svn diff > ~/svndiff.txt

そして、SublimeText 2のプレーンテキストファイルを取得して、読みやすくしました。これはかなり基本的なものだと思いますが、同様の問題を解決するのに役立ったので投稿したいと思いました。

1
cdmo

これはあなたが探しているものかもしれません:

svn diff -r HEAD --summarize

0
maxim1000