質問

コード内でプロジェクトのバージョンを記録する方法を実装して、テスト時に使用したり、バグを追跡したりできるようにしたいと考えています。使用するのに最適なバージョン番号は、Subversion の現在のリビジョン番号であるようです。この数値を (私の場合は C++) ヘッダー ファイルなどにフックして、コード内で取得できる簡単な方法はありますか?これはポストコミットフックか何かだと思いますか?

これを実装した経験のある人はいますか (コードを共有してください)、あるいはより良い代替案を提案できる人はいますか?ありがとう。

役に立ちましたか?

解決

気の利いたものではありますが、リビジョン キーワード トリックは、そのリビジョンで変更された場合にのみファイルを更新します。ファイルを変更しない場合、古いリビジョンが反映され続けます。

ソフトウェアに常に全体のリビジョン番号を反映させたい場合は、以下の点を詳しく調べる必要があります。 関連する SVN エントリ ファイル それを抽出します。これはそれほど難しくありません (XML ファイルです)。

ウィキペディアではこれを行っています バージョンページ ライブで実行されているソフトウェアのリビジョンを示します。 コードはここにあります - を探してください getSvnRevision() 方法。

他のヒント

ふたつのやり方:

埋め込む $ID$ または $改訂$ コード内で。次に設定します svn:keywords="ID リビジョン" ファイルのプロパティ。これにより、そのソース ファイルの最後に変更されたリビジョンが得られます。小規模なプロジェクトやスクリプトに適しています。

あるいは、Makefile 主導のプロセスとコマンド ライン ツール svnversion を使用します。(言語固有 - これは C/C++ で機能するはずです)

echo -n "#define VERSION 1.0.1-" > version.h
svnversion -n . >> version.h

または、sed と version.h.in を使用したより複雑なビルド スクリプト。それからちょうど #include version.h

これにより、リポジトリのバージョン番号が得られます。これはコミットや更新のたびに変化し、おそらくほとんどのプロジェクトにとってより適切なバージョン番号になります。

注記:また、手動で更新する人間が判読できるバージョン文字列も使用しました。例では次のようになります。 バージョン:1.0.1-r13445

~J

TortoiseSVN の一部である SubWCRev を使用することもできます。

SubWCRev は、Subversion 作業コピーのステータスを読み取り、オプションでテンプレート ファイル内のキーワード置換を実行するために使用できる Windows コンソール プログラムです。これは、構築中のオブジェクトに作業コピー情報を組み込む手段として、構築プロセスの一部としてよく使用されます。通常、「バージョン情報」ボックスにリビジョン番号を含めるために使用されます。

http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-subwcrev.html

Makefile に以下を追加します。

SVNDEV := -D'SVN_REV="$(shell svnversion -n .)"'
CFLAGS := $(SVNDEV) ...

それからマクロを使用できます SVN_REV コード内の任意の場所、たとえば:

printf ("Version: SVN %s\n", SVN_REV);

使用できます svn:keywords を有効にするプロパティ Rev キーワード。

その後、使用できます $Rev$ コードに含めると、更新時に SVN が自動的に展開します。 $Rev: 256 $ これで解析できます...

詳細については、Subversion マニュアルを参照してください。

優れた最新のソリューション:

を作成します Makefile 次の行が含まれています(と同じフォルダーにあります) YourFile.dox):

sed "s~RevNumber~$(shell svnversion ../)~g" YourFile.dox > YourFileDummy.dox; doxygen YourFileDummy.dox

そして YourFile.dox これを含める必要があります:

...
PROJECT_NUMBER         = "Revision RevNumber"
...

今:

  1. sed 置き換える RevNumber .dox 内の出力は次のとおりです。 svnversion (リポジトリのメイン フォルダーで実行)、変更したファイルを次の場所に保存します。 YourFileDummy.dox
  2. doxygen に実行されます YourFileDummy.dox ドキュメントを生成するには
  3. これで、ドキュメントにリビジョン番号が含まれるようになります。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top