0

WC が新しいリビジョンに更新されるたびにファイルを変更/変更する方法はありますか? または、次善の策として、svn updateが実行されるたびに?

動機は次のとおりです。実行可能ファイル内に SVN リビジョン番号を含めたいと考えています。したがって、ビルドの一部として SubWCRev を実行する必要があります。SubWCRev の出力ファイルは、リビジョン番号が変更されていなくても、毎回再作成されます。これは、何も変更されていない場合でも、すべてのビルドで exe がリンクされることを意味します。必要な時だけリンクしてほしい。

4

3 に答える 3

3
  1. SubWCRev 出力を一時ファイルに取得する
  2. このファイルを現在のリビジョン番号のファイルと比較します
  3. 2 つが異なる場合にのみ、一時ファイルで上書きします。
  4. 一時ファイルを削除する

.bat ファイルを使用してこれを行うこともできます (を使用fc)。何かのようなもの...

REM ***UNTESTED***
FC temp.rev curr.rev | FIND "FC: no dif" > nul 
IF NOT ERRORLEVEL 1 COPY /Y temp.rev curr.rev
DEL temp.rev

編集:余談ですが、Rev-number-file を に依存させることで、Mercurial でこれを行うことができます.hg/dirstate

于 2008-10-01T18:01:46.063 に答える
1

これは、ここでの議論の複製のように思えます: Embedding SVN Revision number at compile time in a Windows app

その質問で説明されている私のアプローチは、プラットフォーム間で機能し、プログラムする任意の形式に出力できるため、ファイルを含めることが実行可能なソリューションであるあらゆる状況で機能します。

あなたの場合、svnversion の出力で M 修飾子を監視する必要があります。これにより、WC が変更されたことがわかります。

于 2008-10-01T18:16:31.910 に答える
-1

私の答えはおそらく短すぎるでしょうが、あなたに何らかの方向性を与えるかもしれません.

SVN にはフックがあります。コードがコミットされるたびに実行されるスクリプトです。

多分?

于 2008-10-01T18:13:35.130 に答える