2009-03-06 4 views
2

リビジョン番号を自動的に埋め込みたいプロジェクトがあります。

この場合、マルチファイルのperlスクリプトです。メインファイルには次のような行があります。

my $ revision = '$ Revision:24 $';

私がリリースをするとき、プロジェクトをリリースディレクトリにチェックアウトします。

THAT FILEの変更をチェックインすると、リビジョン番号が変わります。 $ Revision $属性は、チェックイン時に更新されますが、チェックアウトでは更新されません。

事が主なファイルは、多くの場合、それを変更しない、ので、プロジェクト内の他のファイルが27で、今であっても、メインはまだ24

を持っている私が得ることができる方法はありますメインファイルは最新のレヴェル番号を反映していますか? svnがチェックアウトの最後に出力したもの、すなわち「リビジョン27をチェックアウトしました」。

+0

はつけませんコマンドを見てみましょう。あなたがしたいことは、おそらく後処理のステップを必要とするでしょう。 –

答えて

1
if (! -e '.version') 
{ 
    open VERSION, '>.version'; 
    print VERSION `svnversion -n | cut -f1 -d:`; 
    close VERSION; 
} 

my $revision = '$Revision: ' . `cat .version` . ' $'; 

注:あなたはそのままで、このコードを使用する場合子犬が死んでしまう)

+0

一時ファイルを作成するのではなく、svnversionコマンドの出力を直接使用しないのはなぜですか? –

+0

スクリプトが実行されるたびに 'svnversion'を実行したくない場合。 –

2

それはCVSに似ている、あなたは$あなただけのキーワードプロパティを設定する必要が$リビジョンを使用することができますそれはSVNがそれがキーワード置換を行うことになっていることを知るためのファイルです。マニュアルから

「いいえSVNでは:Subversionは特別何もしません、そのファイルに設定されたプロパティをキーワードさて、 はのはLastChangedDateキーワードの置換を可能にしましょう $のsvn propsetのsvn:。。キーワードは」日著者は、 " プロパティ 'のsvnを:キーワード' weather.txt 'weather.txt' に設定$ "

http://svnbook.red-bean.com/en/1.5/svn-book.pdf

+0

真実で有益な情報ですが、これは質問された質問に答えることさえできません。 –