Как включить идентификационную строку для репозитория Git?

Как включить ident $Id$ в файлах в репозитории Git?

Резюме . Рекомендуемым способом внедрения информации о версии в продукт является использование системы сборки для этого; см. ниже подробную информацию и альтернативные подходы.


В Git (и я обычно думаю, что в других системах VCS с атомными коммитами) нет такой вещи, как версия одного файла .

Git поддерживает расширение запроса по $Id:$ , но:

  1. Это делается только по запросу . Вы должны указать (возможно, используя шаблон globbing), что файл (или набор файлов) имеет набор атрибутов ident (в файле .gitattributes в дереве или в .git / info / attributes) для локальных настроек репозитория) ,
  2. Он расширяется до SHA-1 содержимого файла (или, точнее, в $Id:$ ). Причиной такого выбора является то, что Git не касается файлов, которые не изменялись при переключении или перемотке филиала; if ‘$ Id: $’, расширенный до информации о ревизии, для обновления каждого файла, контролируемого версией, например, при переключении ветвей.

Git поддерживает довольно широкий набор $Format:...$ placeholders, который расширяется для фиксации информации (например, $Format:%H$ заменяется хешем фиксации), но:

  1. Расширение выполняется только при запуске git-архива в его выходном файле.
  2. Он выполняется по запросу , контролируется с помощью атрибута export-subst .

Рекомендуемый способ внедрения информации о версии – это сделать это через систему сборки (на этапе сборки); см., например, Git Makefile и скрипт GIT-VERSION-GEN, используемый Makefile в веб-интерфейсе Git для репозитория git.git.

Тем не менее (ab) можно использовать фильтр фильтра очистки / smudge (через атрибут filter ), чтобы получить ключевое слово с расширением CVS, развернуть ключевые слова в кассе и очистить их при вводе содержимого в repository.

Вы можете сделать это, добавив шаблон, для которого вам нужна эта функция, а затем ident в файле .gitattributes . Это заменит $ Id $ на $ Id: <40-значный SHA> $ при проверке файла. Обратите внимание, что это не даст вам номер версии файла, как в CVS / SVN.

Пример:

 $ echo '*.txt ident' >> .gitattributes $ echo '$Id$' > test.txt $ git commit -a -m "test" $ rm test.txt $ git checkout -- test.txt $ cat test.txt 

Ссылка на gitattributes (5) Ручная страница

Идентификатор Git не выполняет то, что $ Id $ делает в других системах управления версиями. Как kludge, используйте RCS вместе с git: RCS для отдельных версий файлов и git для контрольной точки проекта в целом. Как я уже сказал, это клад, но это имеет смысл (иногда для некоторых вещей).

Interesting Posts

Eclipse говорит: «Рабочее пространство в использовании или не может быть создано, выбрано другое». Как открыть рабочую область?

Что делает больше смысла – char * string или char * string?

Запланированное задание Windows 10 выполняется как пользователь admin не запускает powershell

Можно ли прочитать значение annotations в java?

Как настроить Windows на виртуальной машине с помощью Powershell (Hyper-V)

Как заменить несколько подстрок строки?

Как настроить яркость подсветки монитора в Windows

Могу ли я узнать возвращаемое значение перед возвратом во время отладки в Eclipse?

Как правильно проверить обещания с моккой и чаем?

Интернет перестает работать через несколько минут

Как я могу найти файлы, не соответствующие конкретному расширению в Windows XP?

Отключить автоформат в Excel 2010

Могу ли я сделать файлы, удаленные на NAS, автоматически перейти в корзину?

Как инициализировать структуру из объекта json

Может ли абстрактный class иметь конструктор?

Давайте будем гением компьютера.