3

このブログ投稿によると、このコマンドはrelease-2.0.2rc1、protobufのタグがいつ作成されたかを教えてくれるはずです。

svn log -v -r0:HEAD -l1 --stop-on-copy http://protobuf.googlecode.com/svn/tags/release-2.0.2rc1/

ただし、そうではありません。

svn log -v -r0:HEAD -l1 --stop-on-copy http://protobuf.googlecode.com/svn/tags/release-2.0.2rc1/
------------------------------------------------------------------------
r54 | kenton@google.com | 2008-09-29 20:26:43 -0400 (Mon, 29 Sep 2008) | 3 lines
Changed paths:
   M /tags/release-2.0.2rc1/configure.ac
   M /tags/release-2.0.2rc1/java/pom.xml
   M /tags/release-2.0.2rc1/python/setup.py

Update version number in 2.0.2rc1 release branch.

リビジョン53を見ると、実際のコピーが得られます。

svn log -v -r53 -l1 --stop-on-copy http://protobuf.googlecode.com/svn/
------------------------------------------------------------------------
r53 | kenton@google.com | 2008-09-29 20:23:29 -0400 (Mon, 29 Sep 2008) | 3 lines
Changed paths:
   A /tags/release-2.0.2rc1 (from /trunk:52)

Tagged release candidate 2.0.2rc1.

そのため、そのコマンドは、コピー後にリビジョンを取得するようです。ブランチが作成されたリビジョンを取得するコマンドを取得するにはどうすればよいですか?

4

3 に答える 3

2

そこで行っているのは、リポジトリのスペース全体を目的のブランチだけにフィルタリングし、「そのブランチの最初のリビジョンは何ですか」と尋ねることです。明らかに、以前のリビジョン (それを作成したもの)) はその一部ではありません。ブランチが作成される前は存在しなかったからです。

したがって、最初のコマンドが行うことは、ブランチが使用された最初のリビジョン (最初のコミットまたはコピー) を伝えることです。それはあなたのブランチではなく親の変更であるため、(ブランチが追加されたときの) 前のリビジョンへの変更は提供されません。(svnの各ディレクトリは、サブディレクトリを追加すると新しい子が追加されるエクスプローラーに表示されるディレクトリではなく、各ディレクトリを子のリストを含むテキストファイルと考えてください)

親ディレクトリ (タグ dir) を操作する場合を除き、実際には問題なく動作します。分岐されたリビジョンを見つける必要はありません。必要なのは、分岐への最初の変更だけであり、コピー時に停止します。あなたにそれを与えます。

于 2012-08-19T12:41:20.900 に答える
2

これには、2 つのコマンドが必要になる場合があります。私の目標は、SVN コマンドラインからではなく、SharpSvnからこの情報を取得することだったので、問題をスクリプト化するところまでは行きませんでした。ただし、コマンドラインから実行する手順は次のとおりです。

svn log -v -r0:HEAD -l1 --stop-on-copy http://protobuf.googlecode.com/svn/tags/release-2.0.2rc1/
REM inspect the output and see that there is no mention of /tags/release-2.0.2rc1/ being created or copied.
svn log -v -r53:0 -l1 --stop-on-copy http://protobuf.googlecode.com/svn/tags/release-2.0.2rc1/
于 2012-08-19T12:25:27.180 に答える
1

-l表示するログ エントリの数を制限するため、複数のコミットがある場合は、最新のコミットのみを取得します。省略-l1すると、ブランチが作成されたエントリが最後のエントリである完全なリストが表示されます。

もちろん、タグを「適切に」使用していれば、最初のコマンドは問題なく機能していました。タグには 1 つのコミットしかなく、それは作成したコピーです。その後、タグを変更しないでください。それらをブックマークと考えてください:-)

于 2012-08-18T03:20:32.553 に答える