我想为所有的git仓库设置一个pre-commit hook来使用jshint和phplint来验证语法错误。但问题是git有一个功能,可以通过使用--no-verify标志来跳过pre-commit hook。但我不需要使用这个选项。我可以为git阻止--no-verify标志吗?请提供一种方法。
piah890a1#
首先:你不能明确地阻止别人传递--no-verify选项。也就是说,使用pre-commit钩子进行linting是一个很好的做法,避免毫无理由地传递--no-verify选项也是一个很好的做法。但是,如果你想让传递--no-verify选项变得更麻烦,你可以:1.生成验证令牌并将其附加到pre-commit中的提交消息;
--no-verify
pre-commit
pre-receive
41zrol4v2#
在你的VSCode的侧面,转到getLens为已安装的应用程序,然后点击设置图标。然后点击“扩展设置”。在顶部,有一个搜索输入框,只需输入“git”。你会看到“git(81)”。点击它,然后选中“允许无验证提交”的框
hgtggwj03#
git hooks是一个客户端验证(可以把它看作是一个前端),如果你想确保验证永远不会被跳过,你需要在CI(后端)上做。以下是我个人对git hooks的看法:防止开发者在linter、测试等没有通过情况下合并PR是一个很好的实践。但是在CI上这样做,不要过早地在客户端强制执行它。这会不必要地减慢开发过程。允许开发人员决定何时修复linter问题,而不是说“你不能提交,直到你把它做得完美”。这将使他们能够专注于解决他们正在处理的问题,而不是必须以代码风格标准进行思考
3条答案
按热度按时间piah890a1#
首先:你不能明确地阻止别人传递
--no-verify
选项。也就是说,使用pre-commit
钩子进行linting是一个很好的做法,避免毫无理由地传递--no-verify
选项也是一个很好的做法。但是,如果你想让传递
--no-verify
选项变得更麻烦,你可以:1.生成验证令牌并将其附加到
pre-commit
中的提交消息;pre-receive
,如果此令牌丢失或无效,则使用非零的exitcode退出pre-receive
。(您可以在预接收钩子中执行的操作示例:https://github.com/github/platform-samples/tree/master/pre-receive-hooks)有些人决定避免通过
--no-verify
可以手动执行第1步,这就是为什么这不是100%有效的原因。我不建议在专业环境中设置这一点,但我完全支持人们使用他们所掌握的工具来为自己灌输良好的习惯,同时学习更多关于git hooks的知识。41zrol4v2#
在你的VSCode的侧面,转到getLens为已安装的应用程序,然后点击设置图标。然后点击“扩展设置”。在顶部,有一个搜索输入框,只需输入“git”。你会看到“git(81)”。点击它,然后选中“允许无验证提交”的框
hgtggwj03#
git hooks是一个客户端验证(可以把它看作是一个前端),如果你想确保验证永远不会被跳过,你需要在CI(后端)上做。
以下是我个人对git hooks的看法:防止开发者在linter、测试等没有通过情况下合并PR是一个很好的实践。但是在CI上这样做,不要过早地在客户端强制执行它。这会不必要地减慢开发过程。允许开发人员决定何时修复linter问题,而不是说“你不能提交,直到你把它做得完美”。这将使他们能够专注于解决他们正在处理的问题,而不是必须以代码风格标准进行思考