如何自动化Pivotal Tracker& Github集成?

时间:2012-12-14 22:46:29

标签: git github githooks pivotaltracker

Pivotal Tracker和Github有很好的集成:一旦设置完成,每个以Pivotal Tracker ID为前缀的提交将自动显示在相应的Pivotal Ticket下,例如:

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

将使用github提交链接自动将注释'my new changes'添加到1234567 Pivotal Ticket中。

但是,每次都很容易忘记添加票证ID。怎么可以简化/自动化?

7 个答案:

答案 0 :(得分:18)

解决方案是使用Git-Hooks和功能分支。 (建议使用Github-flow。)

您必须安装此Git-Hook(将文件复制到本地存储库):

https://github.com/ktamas77/git_hooks

在开始处理特定的Pivotal Ticket之前,您需要创建一个以Pivotal Tracker ID为前缀的分支,例如:

git checkout 1234567_build_new_form

然后按正常方式添加所有更改:

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

你会看到,git hook脚本会自动从功能分支名称中提取Pivotal Tracker ID,并将其添加到每个注释的前面。如果需要,您仍然可以手动覆盖它(使用其他ID)。

通过这种方式,您不必担心每次提交都手动添加Pivotal ID。它也适用于GUIS(例如GIT Tower),因为这些GUI使用标准的GIT库/可执行文件。

答案 1 :(得分:4)

这是一个基于Tamas解决方案的简单shell版本。它从分支名称的末尾获取ID。

“my-feature-branch-12345678”=> “我的承诺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

答案 2 :(得分:4)

安装'git-pivotal-tracker-integration'gem,https://github.com/nebhale/git-pivotal-tracker-integration

它向Git添加命令,如Git的开头和结尾,自动为分支和提交添加跟踪器故事ID,并将提交消息发布到跟踪器。当你打电话给'git start'时,它会拉主人以确保你是最新的,为你创建一个分支,并为你在跟踪器中启动故事。然后工作然后调用'git finish',它会将你的分支合并回主控和更新跟踪器。

答案 3 :(得分:3)

我的团队正在使用git_tracker。每个开发人员必须运行

$ git tracker init

Pivotal Tracker上的每个项目一次。然后,他们需要使用特殊约定命名每个新分支,并使用Pivotal Tracker故事ID作为后缀。例如:

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

其中123456789将成为Pivotal Tracker故事ID。

在这里,你会自动让每个提交参考故事。奖励点,如果您使用GitHub执行拉取请求,您可以要求合并故事的审阅者添加到合并提交中:

[Fixes #123456789] ...

这样,您就不必点击Finish按钮,GitHub会为您完成。

答案 4 :(得分:0)

我正在使用bookmarklet,它还设置故事标题中的提交消息。

[#69609212] Add new Todo

您可以从here

获取

答案 5 :(得分:0)

迟到的评论,但可能仍然是一个有用的评论。我想要@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

请注意,我们将问题ID添加到分支名称,但修改正则表达式以匹配字符串的结尾非常基本,而不是开头。我们还将问题ID添加到注释的开头,因为这在git日志中提供了更清晰的概述。如果上述脚本是ues,则每个提交消息都将以[#<issue ID>]为前缀,除非分支名称不以实际问题ID开头。

应该注意的是,如果在prepare-commit-msg钩子中的任何其他代码之前添加此代码可能是最好的,因为这将导致所有提交被预先添加,甚至自动合并等。

希望这有帮助!

答案 6 :(得分:0)

这是一个完全符合你想要的宝石:

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(-)