【问题标题】:git hooks bash -- getting the commit messagegit hooks bash -- 获取提交信息
【发布时间】:2010-07-23 18:59:43
【问题描述】:

我正在编写一个 git 挂钩,以在提交到主分支时运行。我需要它来解析并在提交消息中查找一些文本。如何在我的 bash 脚本中引用提交消息?

另外我想知道如何只在提交到主分支时运行钩子。因此开发人员可以在修复错误或其他内容时取消本地提交并提交到主分支。

请,谢谢。

【问题讨论】:

  • 我对“当他们修复了错误或其他东西时取消他们的本地提交并提交到主分支”感到困惑 - 这是否意味着只有这些不经常提交到 master 需要验证,或者其他东西只有在合并到master时才需要验证? (实际上,错误修复最初通常应该在它们自己的主题分支上。)
  • 只需要验证不频繁的提交。

标签: git bash


【解决方案1】:

使用以下命令:

cat $1

将在 commit-msg 中打印您的提交消息

【讨论】:

    【解决方案2】:

    答案稍微取决于您尝试对提交消息执行的操作。您可能会询问三个钩子:

    • prepare-commit-msg 在准备好默认消息后立即运行,在用户编辑它之前。第一个参数是带有提交消息的文件的名称。 (第二个参数表示消息的来源。)

    • commit-msg 在提交消息被编辑/最终确定之后,但在提交发生之前运行。如果您想在用户的提交消息错误的情况下使提交失败,或者要修改消息,您需要这样做,并且单个参数是包含提交消息的文件的名称。

    • post-commit 在提交之后运行。它没有参数,但您当然可以从git log -n 1 HEAD 获取消息(可能使用--format=format:%s%n%b 或类似的)。如果您只想在消息中查找某些内容并根据它进行通知,则应该使用它。

    本文所有素材均取自githooks manpage

    至于只在主分支上运行,你只需要这样:

    if [ "$(git symbolic-ref HEAD)" == "refs/head/master" ]; then
        # do your stuff
    fi
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-20
      相关资源
      最近更新 更多