39

git ドキュメントを参照すると、SVN のコミット フックや、ファイルがリポジトリにコミットされるたびにファイル内のバージョン番号や著作権通知を更新できる "propset" 機能に類似するものは見当たりません。

git ユーザーは、この種の機能用に外部スクリプトを作成することを期待されているのでしょうか (それは問題外ではないようです)、それとも明らかな何かを見逃しただけなのでしょうか?

編集:明確にするために、私はもっと興味があります。

svn propset svn:keywords "Author Date Id Revision" expl3.dtx

このような文字列:

$Id: expl3.dtx 780 2008-08-30 12:32:34Z morten $

コミットが発生するたびに、関連情報で最新の状態に保たれます。

4

5 に答える 5

18

私はこれに対するかなり完全な回答を別の場所で書き上げ、コードでその方法を示しました。まとめ:

  1. あなたはおそらくこれをしたくないでしょう。を使用git describeすることは合理的な代替手段です。
  2. $Id$これを行う必要がある場合は、$Format$かなり簡単です。
  3. より高度なものはgitattributes、カスタム フィルターを使用する必要があります。の実装例を紹介し$Date$ます。

フック関数に基づくソリューションは、作業コピーを汚してしまうため、一般的には役に立ちません。

于 2008-09-17T01:19:47.327 に答える
14

Git FAQからの引用:

git にはキーワード拡張がありますか?

推奨されません。キーワード拡張はあらゆる種類の奇妙な問題を引き起こし、特に SCM のコンテキスト内では、とにかくあまり役​​に立ちません。git の外では、スクリプトを使用してキーワード展開を実行できます。Linux カーネル エクスポート スクリプトはこれを実行して、Makefile に EXTRA_VERSION 変数を設定します。

本当にこれを行いたい場合は、gitattributes(5) を参照してください。翻訳が元に戻せない場合 (SCCS キーワード展開など)、問題が発生する可能性があります。

于 2008-09-02T16:25:27.917 に答える
4

Git にはコミット前フックとコミット後フックがあり、それらは各 .git/hooks ディレクトリ内にあります。ファイルを変更し、chmod して実行可能にするだけです。

于 2008-09-02T16:36:09.933 に答える
1

おそらく最も一般的な SVN プロパティである 'svn:ignore' は、メタデータではなく .gitignore ファイルを通じて行われます。残念ながら、他の種類のメタデータについてこれ以上役立つものはありません。

于 2008-09-02T15:10:51.667 に答える