2017-06-14 14 views
1

バージョン管理されていないコードレベルのファイル、特にファイルのリビジョンIDにはいくつかのメタデータが含まれています。可能であれば、私は、ファイルがチェックインされるたびに、subversionサーバは新しいリビジョン番号をとるように特定のディレクトリを設定したいとして追加しますSubversionはリビジョンIDをファイルに追加できますか?

/* REV:$ revNo */

ファイルの末尾に移動します。問題は、これらのバージョン管理されたファイルを処理するスクリプトは、ファイルのリビジョンが何であるかを知りたいし、ファイル内の最後の行を読み取ることです。ファイルのセマンティクスの残りの部分を分解しない形式で入力します。いくつかのsvn APIを使用してファイルのリビジョンをチェックしたり、そのバージョン化されたオブジェクトに対してシステムレベルのsvnコマンドを呼び出すよりも簡単です。

このタスクを自動化する方法はありますか?

+2

なぜdownvote? – amphibient

答えて

2

サーバー

これがサーバー側で実行できるかどうかはわかりません。私はそれができると思います。アクションを実行するにはサーバーにpre-commit hookが必要です。これはサーバー固有の可能性があります。 VisualSVNでは、次の注文の引数で事前にコミットと呼ばれているpower-shellスクリプト書くことができます:

[1] REPOS-PATH 
[2] REV 
[3] TXN-NAME. 

を私はあなたがバージョン管理されたファイルにその情報を追加するために、これらのパラメータを使用することができますだと思い。私はそれが別のコミットを引き起こすかどうか分からず、別のプリコミットフックを起動します。

クライアント

クライアント側でも同様のことを間違いなく実行できます。私はSubWCRevを使用します。これは、コマンドラインインターフェイスを使用してSVNパラメータを取得するTortoiseSVNの一部です。 SubWC.h.in:

#define SVNREV "2345" 
#define SVNMOD "Modified" 
#define SVNVER "Unversioned items found" 

:あなたはビルド前イベント中SubWCRev.exe . SubWC.h.in SubWC.hを実行した場合、あなたは自動生成されたヘッダを取得します次に

#define SVNREV "$WCREV$" 
#define SVNMOD "$WCMODS?Modified:Not modified$"; 
#define SVNVER "$WCUNVER?Unversioned items found:no unversioned items$"; 

ファイルで

#includeそのヘッダーを使用して、アプリケーションにバージョン情報を埋め込むことができます。

その良い説明はhereです。生成されたファイルのバージョンは表示されませんが、同じプリビルドスクリプトでsvn ciのスクリプトを作成できます。

+0

フックスクリプト経由でこれを行うことをお勧めします。フックスクリプトを使ってトランザクションやリビジョンを変更しないでください。しかし、 'customprop:name = MyIDNumber'のようないくつかのバージョン管理されていないプロパティの形でカスタムIDを追加することは場合によってはうまくいくかもしれません。 – bahrep

関連する問題