Как добавить информацию о проекте в комментарий Git commit? - PullRequest
5 голосов
/ 07 июля 2010

В Git, если вы делаете коммит, он содержит раздел под сообщением коммита, который закомментирован.Он содержит инструкции по написанию сообщения фиксации, а также список файлов, которые меняются.Примерно так:

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:  important-file.txt 
#
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   some-other-thing.txt
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       untracked.txt

Можно ли добавить в этот файл дополнительные материалы?Один очевидный пример использования - для тех, кто использует программное обеспечение для отслеживания проблем, такое как Trac , Redmine и т.п., задает дополнительные синтаксические элементы.Например, пользователи Redmine могут включать номер проблемы и некоторые специальные ключевые слова для пометки проблем как разрешенных: ключевыми словами являются «ссылки» (и «ссылки») и «исправления» (или «закрытие») - но мне часто бывает труднозапоминать ключевые слова.

Тогда было бы удобно, если бы можно было добавить какой-то специфичный для проекта текст внизу инструкций фиксации.

Существует ли какой-либо существующий способ сделать это илимне нужно взломать один в?Как побочный вопрос, есть ли у других VCS (например, Mercurial) похожее поведение?

Ответы [ 4 ]

5 голосов
/ 07 июля 2010

Я использовал commit.template (как описано здесь ). Я мог бы использовать ловушку prepare-commit-msg, но шаблон фиксации делает работу немного проще, плюс я могу сохранить шаблон фиксации в контроле версий для проекта.

3 голосов
/ 07 июля 2010

Вариант 1:

Как уже упоминалось, прямой способ сделать это с помощью Git - это перехват prepare-commit-message .

Однако в этой стратегии есть проблемы, которые необходимо учитывать. Из главы 7.4 Pro Git:

[скрипты хуков на стороне клиента] не передается с клоном проект, вы должны распространять эти сценарии другим способом, а затем есть ваши пользователи копируют их в свои .git / hooks каталог и сделай их исполняемый файл. Вы можете распространять эти крючки в рамках проекта или в отдельный проект, но нет возможности настроить их автоматически.

Вариант 2:

Как уже упоминалось Том Моррис , используйте шаблон коммита .

Вариант 3:

Вы можете сделать пользовательскую сборку Git, которая включает ваши дополнительные инструкции. Инструкции, включенные в текущее сообщение коммита, жестко запрограммированы в исходном коде Git. См $GIT_SRC/builtin/commit.c начиная с строки 655 .

Этот метод, вероятно, не является предпочтительным, поскольку вам придется применять патч каждый раз, когда выпускается новая версия Git.

Вариант 4:

Создайте патч для Git, который добавляет эту функцию и отправьте его в список рассылки. Если вы (или другие) решите попробовать это, я сначала попросил бы совет из списка о том, как действовать.


Mercurial:

Сценарии хуков в Mercurial ведут себя аналогичным образом. С Глава 10 Mercurial: полное руководство:

В Mercurial крючки не являются ревизиями контролируется и не размножается, когда Вы клонируете или извлекаете хранилище. Причина этого проста: крючок это совершенно произвольный кусок исполняемый код Он работает под вашим личность, с вашей привилегией уровень, на вашей машине.

Это было бы крайне безрассудно для любого распределенная система контроля версий внедрить крюки с контролем версий, как это будет легко предложить эксплуатируемый способ подорвать аккаунты пользователей ревизии система управления.

1 голос
/ 07 июля 2010

Вы можете настроить сообщение коммита через prepare-commit-message hook .

0 голосов
/ 07 июля 2010

Я почти уверен, что для этого вы могли бы использовать ловушку prepare-commit-msg. Взгляните на githooks для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...