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'
И это локальная настройка, которую должны повторять все разработчики, чтобы она не была идеальной.