验证GitHub“Squash and Merge”提交消息的格式

时间:2017-02-02 20:38:58

标签: git github githooks changelog

我想设置一个GitHub项目,使用conventional-changelog standard version生成其更改日志。我们使用squash and merge工作流将PR合并到我们的主要开发分支中。

有没有办法可以强制执行压缩提交的提交消息遵循特定格式?

理想情况下,这可以很好地与GitHub UI一起使用,例如显示为失败检查。我意识到我可以简单地编写一个浏览器扩展来强制执行此操作,但是那个在项目上工作的人都需要安装扩展,这对于一个开源项目的入口来说太高了。

1 个答案:

答案 0 :(得分:1)

目前尚不清楚您是否打算在GitHub Public或Enterprise上使用此功能。我还没有尝试在GitHub Public上实现这个功能。

在Enterprise上,该过程是为您对保护感兴趣的特定仓库创建预接收挂钩。请注意,除非您愿意上传新环境,否则您的预接收挂钩可以使用的工具受到限制。

最佳细节可在以下网址找到: https://help.github.com/enterprise/2.11/admin/guides/developer-workflow/creating-a-pre-receive-hook-script/

基本上,流程看起来像是:

#!/usr/bin/env bash
#
DEFAULT_BRANCH=$(git symbolic-ref HEAD)

while read oldrev newrev refname; do
  # We only care about these changes to master
  if [[ "${refname}" != "${DEFAULT_BRANCH:=refs/heads/master}" ]]; then
    exit 0
  fi

  # branch or tag got deleted
  if [ "${newrev}" = "${zero_commit}" ]; then
    continue
  fi

  # branch or tag is being created
  if [ "${oldrev}" = "${zero_commit}" ]; then
    continue
  fi

  for COMMIT_HASH in `git rev-list ${oldrev}..${newrev}`;
  do
    # Add your COMMIT_HASH scrubbing process here
    # On failure exit 1
  done
done
exit 0