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中,请参阅 和 部分identexport-subst以及filterVonC 的答案中提到的选项。ident扩展发生在结帐时,而仅export-subst在使用时发生git archive。该filter选项适用于签入和签出路径,并且可以更通用,但是对于对不同类型的文件有不同要求的任何内容(例如 C 代码与 shell 脚本 - 不同的注释格式),它的有用配置需要大量工作) 或其他复杂的要求。

于 2015-06-26T15:12:34.203 回答