web-dev-qa-db-ja.com

ソースコードにSVNリビジョン番号を含める

私の要件は単純です。各ファイルの先頭に、次のようなブロックコメントがあります。

/*
 * This file was last modified by {username} at {date} and has revision number {revisionnumber}
 */

{username}{date}、および{revisionnumber}SVNの適切なコンテンツを入力したいと思います。

NetBeansSubversionでこれを達成するにはどうすればよいですか?たくさん検索しましたが、必要なものが正確に見つかりません。

17
Petar Minchev

this の質問を見て、いくつかの有用な情報を得ました。 NetBeansを使用しているため、完全に重複しているわけではありませんが、考え方は同じです。これは私のヘッダーです:

/*
 * $LastChangedDate$
 * $LastChangedRevision$
 */

次に、Team> Subversion> Svn propertiesに移動し、プロパティ名としてsvn:keywordsを追加し、プロパティ値としてLastChangedDate LastChangedRevisionを追加します。

そして、NetBeansからコミットすると、次のようになります。

/*
 * $LastChangedDate: 2012-02-13 17:38:57 +0200 (Пн, 13 II 2012) $
 * $LastChangedRevision: 27 $
 */

応援よろしくお願いします!他の回答にはNetBeans情報が含まれていないため、回答を受け入れます。それにもかかわらず、私は他の答えに+1を与えます。

13
Petar Minchev

このデータは存在するだけなのでafterファイルがコミットされたので、クライアントプログラムではなく、SVN自体によって設定される必要があります。 (そして、クライアント側の処理は無効になるか、まったく構成されない傾向があります。)これは、最初の置換後にテンプレート変数が失われるため、必要な単純なテンプレート/置換がないことを意味します。

SVNのキーワード置換に隣接する情報を見つけることができます ここ 。次に、$Rev$のようなものを$Rev: 12 $に置き換えることができます。

10

SubWCRevプログラム でこれを行うことができます。

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

これは通常、ビルドプロセス中に行われます。

Linuxを使用している場合は、Linuxバイナリを見つけることができます ここ 。必要に応じて、svn logの出力を使用して独自に作成することもできます。

4
RedFilter

Petar Minchevの提案に従いましたが、$ LastChangedRevision $タグをコメントブロックに配置せず、文字列に埋め込んだだけです。これで、[ヘルプ]-> [バージョン情報]ダイアログにリビジョン番号をプログラムで表示できるようになりました。

String build = "$LastChangedRevision$";

後で、すべての綿毛がトリミングされた文字列を使用して、バージョン情報ダイアログにリビジョン値を表示できます。

String version = build.replace("$LastChangedRevision:", "").replace("$", "").trim();
4
REBruchs

少し異なるアプローチをお勧めします。

ソースファイルの先頭に次のヘッダーを配置します。

/*
 * This file was last modified by {username} at {date} and has revision number {revisionnumber}
 */

次に、このようなシェルスクリプトを追加します

更新後、チェックアウトスクリプト

USERNAME=# // use svnversion to get username
DATE=# // use svnversion to get revisio nnumber
sed -e "s#{username}#${USERNAME}#" -e "s#{date}#${DATE}#" ${SOURCE_CONTROL_FILE} > ${SOURCE_FILE}

事前コミットスクリプト

cat standard_header.txt > ${SOURCE_CONTROL_FILE}
tail --lines $((${LENGTH}-4)) ${SOURCE_FILE} >> ${SOURCE_CONTROL_FILE}
0
emory