GIT комментарий замена и инъекция

Может ли 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 ответа

Решение

git поддерживает некоторые ограниченные функции расширения переменных, хотя они не выполняются во время регистрации. В git help gitattributesсм. разделы на ident а также export-subst, так же хорошо как filter варианты, упомянутые в ответе VonC. ident расширение происходит при оформлении заказа, в то время как export-subst происходит только при использовании git archive, filter Параметр применяется как к путям регистрации, так и к извлечению, и может быть гораздо более общим, но его полезная настройка требует значительного объема работы для всего, что имеет разные требования для разных типов файлов (например, C-код против сценариев оболочки - разные форматы комментариев) или другие сложные требования.

Вы можете попробовать драйвер фильтра содержимого, в частности, чистый фильтр

чистый фильтр

(изображение показано в разделе " Настройка Git - атрибутов Git " из книги " Pro Git ")

Он может выполнить скрипт по вашему выбору для конкретного файла или набора файлов, объявленных в .gitattributes,

.Gitattributes является версионным и будет виден / использован всеми разработчиками.

Но фильтр содержимого должен быть активирован директивой git config.

git config filter.xxx.clean 'script'

И это локальная настройка, которую должны повторять все разработчики, чтобы она не была идеальной.

Другие вопросы по тегам