【问题标题】:How can I automate Pivotal Tracker & Github Integration?如何自动化 Pivotal Tracker 和 Github 集成?
【发布时间】:2012-12-02 23:08:09
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: git github githooks pivotaltracker


    【解决方案1】:

    解决方案是使用 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 库/可执行文件。

    【讨论】:

      【解决方案2】:

      这是一个基于 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
      

      【讨论】:

      • 不适用于 OS X Lion,因为 grep 不支持 -P(Perl 正则表达式)。
      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        我的团队正在使用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 会为您完成。

        【讨论】:

        • 一些更新。由于我的一些团队忘记在他们的合并消息中添加“修复”,因此 Pivotal Tracker 仪表板最终不同步。所以我构建了this,以便在点击合并按钮后自动完成一个故事!
        【解决方案5】:

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

        [#69609212] Add new Todo
        

        您可以从here获取它

        【讨论】:

          【解决方案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
          

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

          应该注意,最好将此代码添加到 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(-)
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-07-21
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多