0

ブランチを作成するとき、リビジョン番号を記録するために、テキスト ファイルの最初の行を変更するフック スクリプトが必要です。これを行う理由は、このテキスト ファイルが他のスクリプトと連携して、リポジトリから他のファイルの正しいリビジョンを抽出するためです。

特定のパスにコミットしている場合、コミット前にテキスト行を変更するという、コミット前フックスクリプトを作成する方法が必要だと思います。

Set "SVNHEAD=SVN HEAD"
set REPOS=%1%
Set "SVNREV=%REVISION%" (get the revision number somehow from SVN)

gsar -s%PARTSDIR:I:\=I::\% -r%SVNHEAD% -i -f %SVNREV%

実行可能な gsar は、ascii ファイルのテキスト行を置き換えます。.bat ファイルを簡単に実行する方法があれば、それを聞いて本当に感謝しています。これが可能かどうか、またはその方法を知っている人はいますか?

どうもありがとうクリス

4

1 に答える 1

1
  • まだ存在しないため、フックで将来のリビジョン番号を取得することはできません。リビジョン番号は "HEAD"+N (N -任意の正の数) になる可能性があるため、予測できません:同時並列コミットの性質を忘れないでください。
  • 誰もが避けなければならない非常に悪い習慣と見なされるフックのトランザクション コンテンツを変更します。
  • ファイルにリビジョン番号が必要な場合は、SVN キーワードを使用することができます (?)。

$Revision$ キーワードは、このファイルの最後のコミットのリビジョン (他のデータの中で) を含む文字列に変換されます。つまり、あなたの場合はブランチを作成するリビジョンであり、ブランチ内のファイルを変更しない限り、このデータが含まれます。

  • $Revision$ トリックが使えない場合は、他のデータに頼ることができます
    • svn log -q BRANCH-URL分岐を作成する最後のデータ文字列リビジョンを返す
    • 分岐後に追加のコミットを使用するsvn propset somepropertry somevalue BRANCH-URLと、後で propget|proplist を使用して読み取ることができます (somevalue=分岐のリビジョン、既に存在するため)

あなたの状況では、特別な(他のタスクには使用されていない)ファイルを使用することを好みます。これは、分岐の直前に作成し、ブランチ リビジョンで 1 回だけコミットする必要があります(エレガントではありませんが、最も簡単な方法です)。

于 2012-11-06T17:48:22.550 に答える