18

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

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

将通过 github 提交链接将评论“我的新更改”自动添加到 1234567 Pivotal Ticket 中。

但是,很容易忘记每次添加票证 ID。如何简化/自动化?

4

7 回答 7

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 库/可执行文件。

于 2012-12-14T22:46:29.453 回答
4

这是一个基于 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
于 2013-04-17T13:20:18.233 回答
4

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

它将命令添加到 git,如开始和完成到 Git,以自动为分支和提交添加前缀,并使用跟踪器故事 ID,它还将您的提交消息发布到跟踪器。当您调用“git start”时,它会拉动 master 以确保您是最新的,为您创建一个分支并为您在 tracker 中开始故事。做这项工作然后调用'git完成',它会将你的分支合并回主控和更新跟踪器。

于 2013-08-14T14:36:48.393 回答
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 会为您完成。

于 2014-04-02T08:46:49.833 回答
0

我正在使用一个书签,它还设置了故事标题中的提交消息。

[#69609212] Add new Todo

你可以从这里得到它

于 2014-04-17T05:51:26.127 回答
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钩子中的任何其他代码之前,因为这将导致所有提交都被预先设置,甚至自动合并等。

希望这可以帮助!

于 2014-05-23T15:08:40.410 回答
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(-)
于 2015-02-06T16:40:22.310 回答