2

GIT はコード チェックインの時点でインジェクション/トークン置換を行うことができますか?

PVCS は、値の注入/トークン置換によって、企業 XYZ に対して何かを行いました。適例:

次のようなコードがあるとします。

/* $Workfile:$
* Created By: [Developer Name HERE]
* Created On: [Date created in mm/dd/ccyy format, HERE]
*
* Last Revision:
* $Revision:$
* $Date:$
* $Author:$
*
* All rights reserved.
*

*/  

            [INSERT MY AMAZING CODE HERE]

/*
$Log:$
*/

PVCS はそれを次のように変換します。黄色のハイライトはファイルの更新、緑色のハイライトは私のコメントです。

/* $Workfile:  Constants.java  $   (Filename injected)
* Created By: [Developer Name HERE]
* Created On: [Date created in mm/dd/ccyy format, HERE]
*
* Last Revision:
* $Revision:   1.0  $
* $Date:   Jun 26 2015 06:50:52  $
* $Author:   Jsmith  $
*
* All rights reserved.
*
*/    

/*
$Log:   M:/PVCS/xxx Project Database/archives/xx/EJB/src/com/xxxxcommon/Constants.java-arc  $
//    Rev 1.0   Aug 14 2009 18:10:30   jsmith
// Initial revision.   (Comment I used at point of code check-in)
*/

もしそうなら、すべてのソース コード ベースで一貫して実行できるようにするには、何を変更する必要がありますか?

4

2 に答える 2

1

コンテンツ フィルター ドライバー、具体的にはクリーン フィルターを試すことができます。

きれいなフィルター

(「 Git のカスタマイズ - Git 属性」に表示されている画像、「Pro Git book」より)

で宣言され.gitattributesた特定のファイルまたは一連のファイルに対して、選択したスクリプトを実行できます。

.gitattributes はバージョン管理されており、すべての開発者が表示/使用できます。

ただし、コンテンツ フィルターは git config ディレクティブによって有効にする必要があります。

git config filter.xxx.clean 'script'

これは、すべての開発者が繰り返す必要があるローカル設定であるため、理想的ではない可能性があります。

于 2015-06-26T14:33:22.080 に答える
1

gitチェックイン時には実行されませんが、いくつかの限定的な変数展開関数をサポートします。では、 とgit help gitattributesのセクション、identおよびVonC の回答に記載さexport-substれているオプションを参照してください。拡張はチェックアウト時に発生しますが、 は使用時にfilterのみ発生します。このオプションは、チェックイン パスとチェックアウト パスの両方に適用され、はるかに一般的になりますが、さまざまな種類のファイルに対してさまざまな要件があるものについては、かなりの作業が必要になります (たとえば、C コードとシェル スクリプト - 異なるコメント形式など)。 ) またはその他の複雑な要件。identexport-substgit archivefilter

于 2015-06-26T15:12:34.203 に答える