Обновление версия каждый раз git кнопка завершено?

как мы можем изменить версию (каждый +1) с помощью git при каждом нажатии?

example У меня есть 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 с помощью пользовательского script. Экспорт ядра Linux script делает это, чтобы установить переменную EXTRA_VERSION в Makefile.

Если вы действительно этого хотите, см. gitattributes (5). Если ваш перевод не является обратимым (например, расширение ключевого слова SCCS), это может быть проблематичным. (Подсказка: поставляемый $Id $-expansion помещает 40-символьное шестнадцатеричное имя объекта blob в id, вы можете выяснить, какие коммиты включают этот blob с помощью script, как this.)

См. здесь для обсуждения и здесь о том, как Git может помочь в любом случае.

Итак, Git имеет что-то вроде расширения ключевого слова, хотя это не рекомендуется. Git также не имеет понятия "редактирование файла" (это то, что кажется вашим номером @version), поэтому это не сможет дать вам именно то, о чем вы просите.

Можно также создать крючок (возможно, крюк pre-receive?), который увеличит вашу версию. Это просто исполняемый файл (так что это может быть оболочка /Python/Perl/Ruby/whatever -you're-comfortable-with script), которые будут автоматически выполняться при нажатии. См. githooks man page.

Ваш хук script будет:

  • Определите файлы, которые должны быть изменены.
  • Из них найдите те, которые содержат шаблон @version \d+
  • Увеличьте версию. Вы хотите увеличить значение в родительском коммите, а не значение, которое в настоящее время находится в файле!

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