GIT评论替换和注入

GIT comment replacement and injection

可以GIT在代码签入时进行injection/token替换吗?

PVCS 通过 injecting/token 替换值为公司 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)
*/

我们可以这样做吗?如果可以,我们需要更改什么以确保我们可以在所有源代码库中一致地做到这一点?

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

(图片显示在“Customizing Git - Git Attributes", from "Pro Git book”)

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

.git属性已版本化,所有开发人员都将visible/used。

但是内容过滤器必须由 git 配置指令激活。

git config filter.xxx.clean 'script'

这是一个 local 设置,需要所有开发人员重复,所以这可能并不理想。

git确实支持一些有限的变量扩展函数,虽然在check-in的时候不做。在 git help gitattributes 中,请参阅有关 identexport-subst 的部分,以及 VonC 的回答中提到的 filter 选项。 ident 扩展发生在结帐时,而 export-subst 仅在使用 git archive 时发生。 filter 选项适用于签入和签出路径,并且可以更通用,但有用的配置需要相当多的工作来处理对不同类型的文件有不同要求的任何东西(例如 C 代码与 shell 脚本 - 不同的评论格式)或其他复杂的要求。