Pivotal Tracker 和 Github 有很好的集成:一旦设置好,每个以 Pivotal Tracker ID 为前缀的提交都会自动出现在相应的 Pivotal Ticket 下,例如:
git commit -am '[#1234567] my new changes'
git push origin
将通过 github 提交链接将评论“我的新更改”自动添加到 1234567 Pivotal Ticket 中。
但是,很容易忘记每次添加票证 ID。如何简化/自动化?
Pivotal Tracker 和 Github 有很好的集成:一旦设置好,每个以 Pivotal Tracker ID 为前缀的提交都会自动出现在相应的 Pivotal Ticket 下,例如:
git commit -am '[#1234567] my new changes'
git push origin
将通过 github 提交链接将评论“我的新更改”自动添加到 1234567 Pivotal Ticket 中。
但是,很容易忘记每次添加票证 ID。如何简化/自动化?
解决方案是使用 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 库/可执行文件。
这是一个基于 Tamas 解决方案的简单 shell 版本。它从分支名称的末尾获取 ID。
"my-feature-branch-12345678" => "我的提交消息 [#12345678]"。
移至 .git/hooks/prepare-commit-msg 并使其可执行:
#!/bin/bash
if story_id=`git branch | grep -oP '^\*.*\-\K[0-9]+$'`
then
echo "[#$story_id]" >> "$1"
fi
安装“git-pivotal-tracker-integration”gem,https://github.com/nebhale/git-pivotal-tracker-integration
它将命令添加到 git,如开始和完成到 Git,以自动为分支和提交添加前缀,并使用跟踪器故事 ID,它还将您的提交消息发布到跟踪器。当您调用“git start”时,它会拉动 master 以确保您是最新的,为您创建一个分支并为您在 tracker 中开始故事。做这项工作然后调用'git完成',它会将你的分支合并回主控和更新跟踪器。
我的团队正在使用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 会为您完成。
迟到的评论,但也许仍然有用。我想要@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
钩子中的任何其他代码之前,因为这将导致所有提交都被预先设置,甚至自动合并等。
希望这可以帮助!
这是一个完全符合您要求的宝石:
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(-)