4

重複の可能性:
GitリポジトリのID文字列を有効にする

私のプロジェクトでは、すべてのソースファイル(言語(Java、Python、シェル)に関係なく)には、ソース管理情報(ブランチ、最後のコミットの日付、コミッター名など)を含むコメント行があります。

これは、ソース管理アプリケーションによって自動置換される特別なプレースホルダー($ Branch $など)を使用して行われます。

gitで同様の機能を実現することは可能ですか?

WindowsではGitExtensionsを使用し、Linuxではまだ決定されていないGUIを使用していますが、どちらもgitコマンドラインツールを呼び出すGUIにすぎないと思います。

4

2 に答える 2

5

Gitはこれらのプレースホルダーをサポートしておらず、おそらくサポートすることはありません。

代わりに、git describeコマンドの出力を含むソースファイルを自動的に生成し、アプリケーションのコンパイル中にそれを含めます。または、代わりに構成ファイル(JSONまたは必要なもの)を生成することもできます。

バージョン情報を含むC++ヘッダーを生成するには、次のようなシェルスクリプトを使用します(これらのコマンドをmakefileに直接追加できます)。

(
  echo '/* Generated file, do not edit. */'
  echo  '#define APP_VERSION "'`git describe`'"'
  echo  '#define APP_VERSION_DATE "'`git log -n 1 --format=%ai`'"'
) > version.h

スクリプト言語でこれを行うには、post-commitやその他のフックを使用できます。

于 2013-02-03T13:44:05.247 に答える
4

キーワード置換を繰り返すには、Gitのスマッジ/クリーンフィルターについて読む必要があります。

Grokセクション「KeywordExpansion」では、$ DATE $キーワードを拡張する例が説明されています(逆操作が必要です)。$ SOMEKEYWORD $をバージョン文字列に拡張するほとんどの作業は内部で実行できる場合、クリーンな部分は手作業(git describeで実装する必要があります

于 2013-02-03T23:05:52.043 に答える