Обновлять версию каждый раз, когда делается git push?
Как нам нравится менять версию (каждый +1), используя git при каждом нажатии?
пример у меня есть 2 PHP-файл
libs/lib1.php
libs/lib2.php
в каждом заголовке обычно есть информация
/**
* LIB1.PHP
* this libs does something like this
* and that this is a doc for you
* @version 145
* @todo something todo
* @author DAMS
*/
/**
* LIB2.PHP
* this libs does something like this
* and that this is a doc for you
* @version 445
* @todo something todo
* @author DAMS
*/
мы можем искать и добавлять +1 делать версию каждый раз, когда мы нажимаем?
1 ответ
То, что вы просите, по сути, расширение ключевых слов. Для начала взгляните на вопрос Git FAQ " Есть ли в git расширение ключевых слов?". Это говорит:
Расширение ключевых слов не рекомендуется. Расширение ключевого слова вызывает всевозможные странные проблемы и не очень полезно в любом случае, особенно в контексте SCM. Вы можете выполнить расширение ключевых слов вне git, используя собственный скрипт. Сценарий экспорта ядра Linux делает это для установки переменной EXTRA_VERSION в Makefile.
Смотрите gitattributes(5), если вы действительно хотите это сделать. Если ваш перевод необратим (например, расширение ключевого слова SCCS), это может быть проблематично. (Подсказка: предоставляемое расширение $Id$ помещает 40-символьное имя объекта шестнадцатеричного двоичного объекта в идентификатор; вы можете выяснить, какие коммиты включают этот BLOB-объект, используя такой скрипт.)
Смотрите здесь для обсуждения, и здесь о том, как GIT может помочь в любом случае.
Так что у git есть что-то вроде расширения ключевых слов, хотя это и не рекомендуется. Git также не имеет понятия "ревизия файла" (это то, что ваш@version
номер, кажется,), так что это не сможет дать вам именно то, что вы просите.
В качестве альтернативы вы можете создать ловушку (вероятно, ловушку перед получением), которая увеличит версию для вас. Это просто исполняемый файл (так что это может быть сценарий оболочки / Python/ Perl/ Ruby/ все, что вам удобно), который будет выполняться автоматически, когда вы выполняете push. Смотрите страницу руководства githooks.
Ваш скрипт хуков будет:
- Определите файлы, которые будут изменены.
- Из них найти те, которые содержат шаблон
@version \d+
- Увеличить версию. Вы хотите увеличить значение в родительском коммите, а не значение, которое в данный момент находится в файле!
Обратите внимание, что это, по крайней мере, так же плохо, как использование раскрытия ключевых слов, против которого Git FAQ рекомендует, и, возможно, намного хуже. Это может привести к раздражающим конфликтам слияний. Вы также можете легко получить вводящие в заблуждение номера версий в своем коде, особенно если вам когда-либо придется зафиксировать исправление в более старой версии, хотя это, вероятно, также произойдет, когда вы объединяете изменения из нескольких репозиториев / веток (что довольно часто встречается в большинстве рабочие процессы), если вы не осторожны.