То, что вы запрашиваете, - это расширение ключевых слов. Для начала взгляните на вопрос часто задаваемых вопросов по Git " Есть ли в git расширение ключевых слов? ". Там написано:
Расширение ключевого слова не рекомендуется. Расширение ключевого слова вызывает всевозможные странные проблемы и не очень полезно в любом случае, особенно в контексте SCM. Вы можете выполнить расширение ключевых слов вне git, используя собственный скрипт. Сценарий экспорта ядра Linux делает это для установки переменной EXTRA_VERSION в Makefile.
См. gitattributes (5) , если вы действительно хотите это сделать. Если ваш перевод необратим (например, расширение ключевого слова SCCS), это может быть проблематично. (Подсказка: поставляемое $Id$-expansion puts the 40-character hexadecimal blob object name into the id; you can figure out which commits include this blob by using a script like this .)
См. Здесь here for a discussion, and о том, как GIT может помочь в любом случае .
Так что у git есть что-то вроде расширения ключевых слов, хотя это не рекомендуется. Git также не имеет понятия «ревизия файла» (каково, по-видимому, ваше @version
число), так что это не сможет дать вам именно то, о чем вы просите.
Вы могли бы альтернативно создать хук (возможно, хук предварительного получения?), Который увеличит версию для вас. Это просто исполняемый файл (так что это может быть сценарий оболочки / Python / Perl / Ruby / все, что вам удобно), который будет выполняться автоматически при нажатии. См. Справочную страницу githooks .
Ваш скрипт-хук будет:
- Определение файлов, которые будут изменены.
- Из них найти те, которые содержат шаблон
@version \d+
- Увеличить версию. Вы хотите увеличить значение в родительском коммите, а не значение, которое в данный момент находится в файле!
Обратите внимание, что это, по крайней мере, так же плохо, как использование расширения ключевых слов, против которого Git FAQ рекомендует, и, возможно, намного хуже . Это может привести к раздражающим конфликтам слияний. Вы также можете легко получить вводящие в заблуждение номера версий в своем коде, особенно если вам когда-либо придется зафиксировать исправление в более старой версии, хотя это, вероятно, также произойдет, когда вы объединяете изменения из нескольких репозиториев / веток (что довольно часто встречается в большинстве рабочие процессы git), если вы не осторожны.