1

Subversion の構造が次のようになるプロジェクトがあります。

branch
tags
trunk
-- Library
---- Library Code
-- Website
---- Website Code

ライブラリ フォルダーには、ほとんどのプロジェクト コードが含まれており、クラス ライブラリです。Web サイト フォルダーは、ライブラリを使用する Web サイト プロジェクトです。Web サイトは、ライブ サイトにデプロイされるものです。

トランクディレクトリの最新のリビジョン番号を格納するファイルを Web サイト ディレクトリのルートに自動的に作成したいと考えています。これは可能ですか?

Subversion サーバーは Windows 上の VisualSVN で、TortoiseSVN とクライアント用の VisualSVN を使用します。

4

4 に答える 4

3

TortoiseSVNを使用しているので、このタスクにはsvnversionの代わりにSubWCRevを使用することをお勧めします。

于 2010-01-22T13:23:04.587 に答える
1

必要な値を生成するために使用できるsvnversionというコマンド ライン ツールがあります。ただし、手動で実行する必要があります。そして、追加の問題があります:

  1. 結果をリポジトリに保存する場合は、コミットする前に実行する必要があり、保存された値は常に古くなっています。

  2. 結果をバージョン管理しないままにしたい場合は、コミット後に実行する必要があります。しかし、それはエクスポートされません。

したがって、質問に対する簡単な答えはありません。提案:

  1. $Revision$ キーワードを含むversion.txtファイルなどを用意します。
  2. version.txtが変更されていない場合にコミットを拒否するpre-commit フック スクリプトを作成する
  3. 必要に応じて、 TortoiseSVN クライアント側フック スクリプトを記述して、コミット前にファイルを自動的に変更します。
于 2010-01-14T10:28:26.013 に答える
1

リビジョン番号を含める通常の方法は、

$Revision$

svn:keywordsプロパティプロパティに が含まれている場合、コミット時に展開されるソース ファイルのどこかにRevision.

ただし、そのファイルが最後にコミットされたときのリビジョン番号のみが表示されますが、現在のHEADリビジョン番号は表示されません。

過去のプロジェクトで、現在のリビジョン番号を抽出するためにコマンド ライン サブバージョン プログラムを呼び出す小さなスクリプトを使用しました。呼び出しsvn infoて、作業コピーのリビジョン番号を含むあらゆる種類の情報を取得できます。これは、そのディレクトリまたはその親の 1 つに対して更新を実行するとディレクトリに対して更新され、実際に更新されるときにファイルに対して更新されるため、完全に正確ではない可能性があります。ただし、とにかく最上位のフォルダーのみを更新したので、当時はそれで十分でした。

>svn info trunk | findstr /r /c:"^Revision"
Revision: 14466
于 2010-01-14T09:50:37.263 に答える
0

コマンドを見てくださいsvn info。これをプロジェクトのビルド前後のイベントとして実行すると、必要な情報 (およびいくつかの追加情報) が得られます。次に、リビジョン番号をファイルに書き込む必要があります。(これを行う場合は、SVNがこのファイルを無視するようにしてください。そうしないと、ファイルの変更、チェック、ファイルの変更などの無限ループに入ります...

于 2010-01-14T09:50:45.310 に答える