У меня есть проблема, когда мы поставляем источник клиенту, который должен иметь информацию о заголовке законного комментария клиента, установленную в исходных файлах с несколько различных версий заголовков в зависимости от которых исходных файлов они (то есть: разработчик указанные категории)
Так что я хочу, это умение задавать строку как $Id$
или $SpecialName$
, чтобы определить, что заголовок должны быть вставлено, который будет расширяет сборку кода (делает файлы zip или jar) в
$SpecialName: lots of customer specific stuff like a big header of copyright, legal, and
other info
blah blah blah $
И если они изменяют или исправляют что-то в файле и отправляют обратно, я хочу проверить изменения в git и игнорировать все между строкой расширенного "$SpecialName:"
и следующим «$» способом $Id$
можно заставить работать при проверке вещи в.
Я видел ссылку на "$Format:"
в this question, но не нашел ссылок на то, что это такое, и является ли это то, что я ищу или нет.
В идеале я мог бы указать строки на сервере репозитория «только для чтения» и распространить его на всех пользователей, когда они будут тянуть изменения, но это отдельная проблема, связанная с достижением первой функциональности.
Похоже, один подход заключается в использовании «фильтры» - от мерзавца книги:
Однако этот результат имеет ограниченное применение. Если вы использовали ключевое слово в CVS или Subversion, вы можете включить datestamp - SHA не все так полезно, потому что он довольно случайный, и вы не можете сказать, если один SHA старше или старше другого.
Оказалось, что вы можете написать свои собственные фильтры для выполнения подстановок в файлах при фиксации/оформлении заказа. Это фильтры «чистый» и « » «smudge». В файле .gitattributes вы можете установить фильтр для конкретных путей, а затем настроить скрипты, которые будут обрабатывать файлы только , прежде чем они будут зафиксированы («чистые», см. Рис. 7.2) и непосредственно перед они вычеркнуты («Smudge», см. Рис. 7.3). Этими фильтрами могут быть , чтобы делать всевозможные забавные вещи.
Соответствующее дело здесь было бы уместно сделать это на сервере репозитория, а не на клиенте - это обработка данных «файл» перед фиксацией и, возможно, предварительно контроль на сервере репозитория?
В git все машины имеют репозиторий, поэтому любая машина может в принципе выступать в качестве сервера хранилища. –
Правда - но желание иметь новый клон или вытащить с сервера (peer), который считается «авторитетным», имеет все «предварительно настроенные», поэтому никаких дополнительных действий со стороны получающего партнера не требуется, чтобы все работало по желанию. И да, это конфликт между тем, чтобы сделать эту «одну кнопку бесшовной» и безопасностью, потому что вы не хотите, чтобы было легко нажимать автоматический запуск активного кода, например, крючки на одноранговых узлах или обратно на другие. Таким образом, единственный способ - создать набор скриптов, поддерживаемых и распределенных отдельно. – peterk
И это делает процесс «поддержания синхронизации» более сложным и делает совместимость с протоколом, который использует несовместимые с интегрированными git-плагинами в IDE, которые часто недостаточно программируемы. – peterk