1

Windows Box で Visual SVN を使用しています。

svn:external として持っている Repository がApplicationあります。Frameworkすべて順調です。

をチェックアウトするとき、フッター ファイルに と のバージョンを含めたいApplicationと思います。このようにして、次のようなものを作成できます。ApplicationFramework

Application Version $ApplicationVersion$, Framework Version $FrameworkVersion$

通常、svn:keywords を使用してリビジョンを追加できることは理解していますが、私が理解しているように、svn:keywords はファイルごとに適用されます。いくつかのサイトではsvnversion、各変数の出力を生成するために を使用することを提案していますが、これについてどうすればよいか完全にはわかりません。

もう一度、Windows Box で、VisualSVN を使用します。また、人々が回答するためのより使い慣れたインターフェイスを提供する場合は、Versions.app を使用して Mac でも開発します :)

編集- 私のアプリケーションは PHP Web アプリケーションです。そのため、コンパイルはありません。

ありがとう!

4

1 に答える 1

4

svnversionを使用するには、svnversionをビルドプロセスに統合する必要があります。Subversionチェックアウトで実行すると73597:73598、ツリーのバージョンを示すのような文字列が出力されます(ファイルが異なればバージョンも異なる可能性があり、ファイルにもローカルな変更が加えられる可能性があることに注意してください)。あなたは次のようなものを置きます

CFLAGS+=-DSVNVERSION="\"`svnversion`\""  

Makefileに入れて、

#define VERSION_STRING "Application version" SVNVERSION ", Framework version" FRAMEWORK_VERSION

コードに。Makeを使用しない場合、またはビルドプロセスでコマンドを実行して、その出力でコンパイラコマンドラインオプションを生成できない場合は、TortoiseSVNに付属のsubwcrevユーティリティを使用することもできます。これをビルド前の手順として使用し、プレースホルダーを含むファイルを、プレースホルダーを実際のバージョンに置き換えたファイルのコピーに変換します。次に、コンパイルによって新しいファイルがコンパイルおよびリンクされます。

編集:PHPの場合、チェックアウトまたは更新時にリビジョンをファイルに自動的に書き込むことはできません。代わりに、すべてのPHPアクセスでsvnversionを実行し、その出力をHTML応答に入れることができます。それが高額になる場合は、svnversionの結果をファイルにキャッシュし、ファイルが1時間以上経過している場合にのみファイルを再生成できます(たとえば)。更新後にファイルを削除して再計算することを忘れないでください。すぐにキャッシュ。

于 2009-07-09T18:53:46.533 に答える