SVNリポジトリがあります。最近変更をコミットしたとき、反映されている現在のリビジョン番号は620です。
Transmitting file data ...
Committed revision 620.
ただし、次にrunsvn info
次のようになります:
Path: .
URL: http://www.site.com.testing/repos/site.com/trunk
Repository Root: http://svn.server/repos/site.com
Repository UUID: a9c3a166-39f6-4cfb-8622-fd24eb11034b
Revision: 584
Node Kind: directory
Schedule: normal
Last Changed Author: bob
Last Changed Rev: 584
Last Changed Date: 2012-03-26 18:32:55 -0400 (Mon, 26 Mar 2012)
したがって、何かをコミットすると、現在のSVNリポジトリは620ですが、svn info
は、現在の回転数が584であることを示しています。また、svn log
は、現在の(最新の)回転数として584も表示します。
WindowsでTortoiseSVNを介してSVNログを見ると、現在のリビジョンとしてリビジョン620が正しく表示されます。
どのようにsvn info
およびsvn log
仕事?
Svninfoコマンドが現在の作業ディレクトリのリビジョンを表示している可能性がありますが、変更された1つまたは複数のファイルをコミットすると、そのコミットの出力にそれらのファイルの新しいリビジョンが表示されます。 584は、フォルダの最後に変更/更新されたリビジョンになります。
フォルダでsvn update
を実行し、svn info
を再実行してみてください。フォルダの残りの部分を最大620にする必要があります
Subversionが示しているのは、リビジョン584をチェックアウトしたことです。情報はサーバーからではなく、.svn/entries
ファイルから直接取得されます。
これは、可能な限りリポジトリサーバーに情報を要求しないというSubversionの基本設計に由来します。ユーザーがたまたまリモートで作業していて、リポジトリサーバーへのネットワーク接続がない場合に、ユーザーがSubversionの多くの能力を利用できるようにすることが決定されました。
svn info
を実行すると、そのファイルがリビジョン620であることがわかります。svn info http://www.site.com.testing/repos/site.com/trunk
を実行した場合、サーバーと通信しているため、最後のリビジョンがリビジョン620であることがわかります。svn update
を実行してからsvn info
を実行した場合、作業ディレクトリがリビジョン620であることがわかります。簡単な質問:いくつかのファイルをコミットしましたか、それとも作業ディレクトリ全体をコミットしましたか?変更されたファイルをコミットで指定した場合、これは理にかなっています。 Subversionは、作業ディレクトリのルートにある.svn/entries
ファイルを更新することを知りませんでした。ただし、すべての変更をコミットした場合でも、これを確認しました。すべての変更をコミットするたびに、svnupを実行することにしました。
覚えておいてください:これはバグではありません。機能です。