如果代码约定不正确,有没有办法防止 git push?
Posted
技术标签:
【中文标题】如果代码约定不正确,有没有办法防止 git push?【英文标题】:Is there a way to prevent git push if the code convention not right? 【发布时间】:2022-01-17 09:26:06 【问题描述】:我听说我可以保护分支并设置一些规则以允许用户推送他们的代码,但我看不到我想要的。
我想要的是当我设置一些代码约定时,如果用户不遵守它,用户的代码将不会推送(带有一些警告或警告他没有遵守约定的代码部分)。
主要使用的语言是python,但未来会包括更多的语言。
【问题讨论】:
我不相信 git 里有任何东西。但是,绝对有可以做到这一点的集成。例如,您可以将 ESLint 添加到 Jenkins 管道 ***.com/questions/32043227/… 或 Github 操作 github.com/marketplace/actions/run-eslint 客户端有pre-push
的钩子,服务器上有pre-receive
的钩子git-scm.com/book/en/v2/Customizing-Git-Git-Hooks
【参考方案1】:
答案是也许。连接的服务器端可以运行pre-receive
挂钩来检查正在推送的内容并接受或拒绝它。但是,GitHub 仅支持 GitHub Enterprise Server(本地解决方案)而不是 github.com 上的自定义 pre-receive
挂钩。即使在 GHES 中,超时也被限制为 5 秒,这可能不足以完全 lint 您的代码。
处理此问题的典型方法是在 CI 中添加一个检查,如果样式不合适或不符合其他策略(例如,缺少尾随空格),则该检查会失败。这将允许推送,但如果拉取请求失败,它将阻止合并。
请注意,在客户端使用 pre-push
或 pre-commit
钩子不是一个好主意,因为这些钩子可以在没有任何证据的情况下轻松绕过。因此,它们不是有效的控制方法,不应用于此目的。
【讨论】:
以上是关于如果代码约定不正确,有没有办法防止 git push?的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 10 storyboard和info.plist git diff没有正确显示