【问题标题】:Can I use a scripted commit template for git?我可以为 git 使用脚本提交模板吗?
【发布时间】:2011-04-01 07:40:47
【问题描述】:

我们正在处理票证,当我们在第一行的 git commit 消息中使用票证编号时,票证会使用提交消息进行更新。

为了简单起见,我们总是在具有提交号的分支上工作。

现在我想看到一个提交消息,其中票号已经填写。

一定是可能的,因为分支已经在提交模板中,但是在被 git 删除的 cmets 中。我已经搜索了文档和网络几次,但我一定是在寻找错误的词,因为我找不到它。

谁能帮忙?

【问题讨论】:

    标签: git git-commit pre-commit-hook


    【解决方案1】:

    您可能希望在本地存储库上设置prepare-commit-msg 挂钩。它可能看起来像这样(假设分支被命名为'work-on-ticket-XXXX':

    #!/bin/sh
    ORIG_MSG_FILE="$1"
    TEMP=`mktemp /tmp/git-XXXXX`
    
    TICKETNO=`git branch | grep '^\*' | cut -b3-`
    
    (echo "Work on ticket #$TICKETNO"; cat "$ORIG_MSG_FILE") > "$TEMP"
    cat "$TEMP" > "$ORIG_MSG_FILE"
    

    将类似的内容(标记为可执行)放入.git/hooks/prepare-commit-msg。当然,您可能需要对其进行调整和详细说明。

    【讨论】:

    • 太棒了!我不知道我是怎么错过的。我什至有 Pro Git 书,其中也有明确的解释。谈论 20-20 事后诸葛亮。谢谢!
    • 不错!获取当前分支名称的更规范方法可能是git rev-parse --abbrev-ref HEAD
    • 请注意,这在 rebase 情况下不起作用。不管怎样,我不这么认为。
    【解决方案2】:

    看起来你应该可以通过使用 .git/hooks/pre-commit-msg 来做到这一点

    一个简单的例子是:

    #!/bin/sh
    # $1 contains the file with the commit msg we're about to edit.
    # We'll just completely clobber it for this example.
    echo "Hello" > "$1"
    

    这将使您的提交以“Hello”开头。显然,由于它是一个脚本,您可以在这里使用一些魔法来填写您的票号和任何其他信息。 .git/hooks/ 目录中应该有一个 pre-commit-msg.sample 告诉你脚本接收哪些参数,如果你需要其他任何东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-21
      • 1970-01-01
      • 1970-01-01
      • 2010-09-13
      • 1970-01-01
      • 2012-01-18
      相关资源
      最近更新 更多