Подтвердить что ты не робот

Как я могу автоматизировать интеграцию Pivotal Tracker и Github?

Pivotal Tracker и Github имеют большую интеграцию: после того, как он настроен, каждая фиксация, которая имеет префикс с идентификатором основного трекера, автоматически появится в соответствующем Pivotal Ticket, например:

git commit -am '[#1234567] my new changes'
git push origin

добавит комментарий "мои новые изменения" автоматически к 1234567 Pivotal Ticket среди ссылки github commit.

Однако, легко забыть добавлять идентификатор билета каждый раз. Как это можно упростить/автоматизировать?

4b9b3361

Ответ 1

Решение состоит в использовании Git -Hooks и ветвей признаков. (Рекомендуется использовать поток Github).

Вам нужно установить этот Git -Hook (скопировать файл в локальный репозиторий):

https://github.com/ktamas77/git_hooks

Прежде чем приступать к работе над конкретным сводным билетом, вы создаете ветку с префиксом Pivotal Tracker ID, например:

git checkout 1234567_build_new_form

затем добавьте все ваши изменения, как обычно:

git commit -am 'form added'
git commit -am 'styles added'
git push origin

вы увидите, что git hook script будет автоматически извлекать идентификатор Pivotal Tracker из имени ветки компонента и добавлять его в начало каждого комментария. Вы можете по-прежнему вручную переопределить его (с другим идентификатором), если хотите.

Таким образом, вам не нужно беспокоиться о добавлении идентификатора Pivotal вручную для каждой отдельной фиксации. Он также работает с GUIS (например, git Tower), поскольку эти графические интерфейсы используют стандартные библиотеки git/исполняемые файлы.

Ответ 2

Вот простая версия оболочки, основанная на решении Tamas. Он принимает идентификатор от конца имени ветки.

"my-feature-branch-12345678" = > "My commit mssg [# 12345678]".

Перейдите в .git/hooks/prepare-commit-msg и сделайте его выполнимым:

#!/bin/bash
if story_id=`git branch | grep -oP '^\*.*\-\K[0-9]+$'`
then
  echo "[#$story_id]" >> "$1"
fi

Ответ 3

Установите gem git -pivotal-tracker-integration ', https://github.com/nebhale/git-pivotal-tracker-integration

Он добавляет команды к git как начало и завершение до git для автоматического префикса ветвей и фиксирует идентификатор истории трекера, а также отправляет ваши сообщения фиксации трекеру. Когда вы вызываете "git start", он будет тянуть мастер, чтобы убедиться, что вы в курсе событий, создайте ветку для вас и начните рассказ в трекере для вас. Затем выполните команду "git finish", и она объединит вашу ветку в мастер и обновит трекер.

Ответ 4

Мои команды используют git_tracker. Каждый разработчик должен запускать

$ git tracker init

один раз для каждого проекта в Pivotal Tracker. Затем им нужно называть каждую новую ветку специальным соглашением, суффиксом которого он является с идентификатором истории Pivotal Tracker. Например:

$ git checkout -b the-great-feathure-123456789

где 123456789 будет идентификатором истории Pivotal Tracker.

И здесь вы идете, вы автоматически будете иметь каждое сообщение, ссылающееся на историю. Бонусная точка, если вы используете GitHub для выполнения запросов на тягу, вы можете попросить рецензентов, которые объединяют историю, чтобы добавить к фиксации слияния:

[Fixes #123456789] ...

Таким образом, вам не нужно нажимать кнопку Finish, GitHub сделает это за вас.

Ответ 5

Я использую букмарклет, который также устанавливает сообщение фиксации из заголовка истории.

[#69609212] Add new Todo

Вы можете получить его из здесь

Ответ 6

Поздний комментарий, но, возможно, еще полезный. Мне нужно то же решение, что и @Sjoerd, но я являюсь пользователем Mac;)

Полученный код выглядит следующим образом:

story_id=`git symbolic-ref --short -q HEAD | grep -o "^[[:digit:]]*"`
if [ ! -z "$story_id" -a "$story_id" != " " ]
then
  echo "[#$story_id] $(cat $1)" > "$1"
fi

Обратите внимание, что мы добавляем идентификатор проблемы к имени ветки, но довольно просто изменить регулярное выражение, чтобы оно соответствовало концу строки, а не началу. Мы также добавляем идентификатор проблемы в начало комментария, так как это дает более четкий обзор в журнале git. Если выше script есть ues, каждое сообщение фиксации будет добавлено с помощью [#<issue ID>], за исключением случаев, когда имя ветки не начинается с фактического идентификатора проблемы.

Следует отметить, что лучше всего, если этот код будет добавлен до любого другого кода в hook prepare-commit-msg, так как это приведет к тому, что все коммиты будут добавлены, даже автоматические слияния и т.д.

Надеюсь, это поможет!

Ответ 7

Вот камень, который делает именно то, что вы хотите:

http://github.com/bogdan/git-storyid

Позволяет выбрать историю из хорошо сформированного меню:

[1] Removing Billing Page
[2] Welcome Email
[3] Tag campaign insertion points and campaigns with an identifier

Indexes(csv): 3
[campaign-tags 3020407]  [#44116647] Initial implementation of campaign tags
 1 file changed, 101 insertion(+), 2 deletions(-)