Обновлять версию каждый раз, когда делается 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 рекомендует, и, возможно, намного хуже. Это может привести к раздражающим конфликтам слияний. Вы также можете легко получить вводящие в заблуждение номера версий в своем коде, особенно если вам когда-либо придется зафиксировать исправление в более старой версии, хотя это, вероятно, также произойдет, когда вы объединяете изменения из нескольких репозиториев / веток (что довольно часто встречается в большинстве рабочие процессы), если вы не осторожны.

Другие вопросы по тегам