「svn update」コマンドを発行する前にリポジトリから何が更新されるかを確認するにはどうすればよいですか?


115

多数のファイルの変更をEclipseからSVNリポジトリーにコミットしました。

次に、LinuxボックスのWebサイトディレクトリに移動して、これらの変更をリポジトリからそこのディレクトリに更新します。

「svn update project100」と言いたいので、「project100」の下のディレクトリを、追加したファイルや変更したファイルなどで更新します。

ただし、自分が行っていない変更を必ずしも更新する必要はありません。だから「svn status project100」と言ってもいいと思ったのですが、これを行うと、完全に異なる変更のリストが表示されます。リストに私の変更はありません。これは奇妙です。

したがって、自分の変更のみがWebディレクトリに更新されることを確認するために、私が行った変更があることがわかっているすべてのディレクトリに移動し、それらのファイルのみを明示的に更新します(例: "svn update newfile1.php"など)。これは退屈です。

ここで標準の作業手順、つまり「svn update」コマンドを実行する前に行われるすべての変更の正確なリストを取得するにはどうすればよいですか?「ステータス」コマンドだと思いました。

回答:


167

試してください:

svn status --show-updates

または(同じですが短い):

svn status -u

9
以下:svn st -u
Kenyakorn Ketsombut '11 / 11/13

何をするX出力での平均値を?
IgorGanapolsky 2016年

1
また、使用:svn status -q -u...リポジトリに属する​​ファイルに関連する更新の変更とローカルの変更のみを表示します。リポジトリ以外のファイルから疑問符(?)を取得することはできません。
ます

56

ローカルの作業コピーを更新せずに、作業コピーと最新のsvnサーバーリポジトリの間で知りたいことに応じて、次のことができます。

SVNサーバーリポジトリの変更点を知りたい場合は、次のコマンドを実行します。

$ svn st -u

ローカルの作業コピーとsvnサーバーリポジトリの両方で同じファイルが変更されているかどうかを知りたい場合は、次のコマンドを実行します。

$ svn st -u | grep -E '^M {7}\*'

特定のリビジョンとHEADの間で変更されたファイルのリストを取得するには、次のコマンドを実行します。

$ svn diff -r revisionNumber:HEAD --summarize

特定のリビジョン間で変更されたファイルのリストを取得するには、次のコマンドを実行します。

$ svn diff -r revisionNumber:anotherRevisionNumber --summarize

(実際に更新せずに)更新される内容を確認するには、次のコマンドを実行します。

$ svn merge --dry-run -r BASE:HEAD .

作業コピーと比較して、svnサーバーリポジトリで特定のファイルのどのコンテンツが変更されたかを知りたい場合は、次のコマンドを実行します。

$ svn diff -r BASE:HEAD ./pathToYour/file

作業コピーと比較してsvnサーバーリポジトリで変更されたすべてのファイルの内容を知りたい場合は、次のコマンドを実行します。

$ svn diff -r BASE:HEAD .

43

以下を発行することにより、(実際には更新せずに)更新される内容を確認できます。

svn merge --dry-run -r BASE:HEAD .

詳細はこちら


上記は私にとってはうまくいかず、走らなければなりませんでしたsvn merge --dry-run --revision BASE:HEAD .
Znarkus、2011年

3
「svn:E195020:混合リビジョンの作業コピー[16032:16061]にマージできません。最初に更新してください」
Hubert Grzeskowiak 2014年

すばらしい答え-悪いことに、混合リビジョンの作業コピーでは機能しません。それは私を学ぶでしょう
Gerard ONeill

2
@HubertGrzeskowiak-皮肉なq:how do I ... without doing an update?a:first, do an update, then ...:) :) :)が大好きです
Jesse Chisholm

17

これは私が探していたものです。最初にグーグルをチェックしましたが、svn help結局私のためにやって来ました:)

svn diff -r BASE:HEAD .


0

'svn diff'を使用して、作業コピーとリポジトリの違いを確認できます。


9
違う。それらはあなたとあなたが最後にリポジトリと同期した時の違いだけをリストするでしょう。その間、他の人がリポジトリにコミットした違いは表示されません。OPは介して、それらを適用することなく、それらの変更が何であるかを知りたがっているsvn update
dland

@Andrewは、チェックアウトされたファイルと、リポジトリのHEADまたはトップバージョンとしてチェックインされているファイルとの違いを確認するために、OPが「svn diff -r HEAD URL」を実行することを提案することを意味していました。
Mac

0

理論的には、自分用に作成したブランチですべての変更を行うことができます。そうすれば、自分だけがそれにコミットすることになると確信できます。

私見機能の開発はこのように行われるべきです。

その後、トランクからではなく、このブランチからこのターゲットマシンを更新できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.