GIT评论替换和注入

时间:2015-06-26 14:15:04

标签: git version-control pvcs

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)
*/

如果是这样,我们可以这样做吗?我们需要更改哪些内容以确保我们能够在所有源代码库中始终如一地进行更改?

2 个答案:

答案 0 :(得分:1)

您可以试用 content filter driver ,特别是干净的过滤器

clean filter

(图片显示在" Customizing Git - Git Attributes",来自" Pro Git book")

它可以针对特定文件或文件集declared in a .gitattributes执行您选择的脚本。

.gitattributes是版本化的,并且将被所有开发人员看到/使用。

但必须通过git config指令激活内容过滤器。

{{1}}

这是一个本地设置,需要所有开发人员重复,因此可能不太理想。

答案 1 :(得分:1)

git确实支持一些有限的变量扩展功能,尽管它们不是在登记入住时完成的。在git help gitattributes中,请参阅identexport-subst上的相关部分,以及VonC答案中提到的filter选项。 ident展开会在结帐时发生,而export-subst仅在使用git archive时发生。 filter选项适用于签入和签出路径,并且可以更加通用,但是对于对不同种类的文件具有不同要求的任何内容(例如C代码与shell)相比,有用的配置需要相当多的工作量。脚本 - 不同的注释格式)或其他复杂的要求。