git - 验证 GitHub "Squash and Merge"提交消息的格式

标签 git github githooks changelog

我想建立一个 GitHub 项目来使用 conventional-changelog standard version生成它的变更日志。我们使用 squash and merge将 PR merge 到我们的主要开发分支的工作流程。

有没有一种方法可以强制压缩提交的提交消息遵循特定格式?

理想情况下,这可以很好地与 GitHub UI 配合使用,例如显示为失败检查。我意识到我可以简单地编写一个浏览器扩展来强制执行此操作,但随后从事该项目的每个人都需要安装该扩展,这对于开源项目来说阈值太高。

最佳答案

目前尚不清楚您是打算将其放在 GitHub Public 还是 Enterprise 上。我还没有尝试在 GitHub Public 上实现它。

在 Enterprise 上,该过程是为您有兴趣保护的特定存储库创建预接收 Hook 。请记住,除非您愿意上传新环境,否则您的预接收 Hook 可以使用的工具将受到限制。

最好的细节可以在以下位置找到: 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

关于git - 验证 GitHub "Squash and Merge"提交消息的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42011894/

相关文章:

Git 获取行编辑时间

Jenkins Permission Denied 中的 GIT 克隆问题

git - 尝试在 Jenkins 上使用 SonarQube 来分析项目,但使用 JDK 1.7 的 Jenkins 出现不支持的主次版本错误

git - fork 后在 devOps 上设置 git 的默认存储库

java - 使用gradle和java在github项目中添加 "Used by"

来自 IDEA 的 github 提交未显示在贡献事件中

linux - 如果我们想在版本化的源代码中搜索,使用 git grep 比使用普通 grep 更好吗?

hook - Gitosis/Git 不执行提交后 Hook

linux - 执行和创建 Git 策略

git hook拒绝添加具有特定扩展名的文件