在 Github 提交中强制执行 PEP-8'ish 格式

Posted

技术标签:

【中文标题】在 Github 提交中强制执行 PEP-8\'ish 格式【英文标题】:Enforcing PEP-8'ish formatting in Github commits在 Github 提交中强制执行 PEP-8'ish 格式 【发布时间】:2012-04-05 15:39:34 【问题描述】:

是否有任何预制的解决方案可以在 Git 提交挂钩中强制执行良好的 Python 标准?

有没有办法在本地结帐中自动化这个过程(类似于 Bazaar,可以将提交挂钩推送到客户端)?当你签出一个 repo 时,它会安装提交钩子就足够了,不需要运行更多的工作/命令。

例如如果您的 .py 文件有一个选项卡,则提交将中止,并发送一个机器人来打开发者。

【问题讨论】:

请注意我已经写了一个小工具来帮助解决这一切:github.com/miohtama/vvv 【参考方案1】:

2020 年更新:

8 年后,您将使用 GitHub Actions,例如 github/super-linter。 我在“How to set up actions in GitHub for new user?”中介绍了这种方法。


2012 年原答案

您可以在 GitHub 端添加服务(请参阅“GitHub - All the Hooks”和existing third-party services)。

但你不能“推钩”(参见“why it is not possible to git add .git/hooks/my-hook”或“Git remote/shared pre-commit hook”。

您可以对用作挂钩的脚本进行版本控制,但每个客户端仍需要激活其预提交挂钩(带有指向该版本化脚本的符号链接)。

此类版本化脚本的示例(用于 Python 标准)将在 blog post、Lorenzo Bolla 中可见,并在 GitHub repo 中进行更新。 它基于PyLint 和PyFlake(另见“PyLint, PyChecker or PyFlakes?”)。


OP 在 cmets 中提到 package vvv 0.1

用于软件源代码验证和 linting 的便捷实用程序

VVV 是一个用于轻松验证和 linting 集成您的软件项目的工具。 根据您在简单配置文件中指定的策略,使用单个命令验证源代码树中的所有文件(无论使用哪种编程语言)。VVV 防止在您的软件源代码控制中提交不良内容或进行清理它更容易。

【讨论】:

注意:PyLint 和 PyFlake 不是您特定 Pep8 Python 指南风格的答案,只是如何在 Git 挂钩中安装和执行 Python 脚本的示例。 现在这里有一个简单的命令可安装工具:pypi.python.org/pypi/vvv/ @MikkoOhtamaa 有趣的是,我已将其包含在答案中以提高知名度。

以上是关于在 Github 提交中强制执行 PEP-8'ish 格式的主要内容,如果未能解决你的问题,请参考以下文章

如何强制删除远程分支在GitHub上

在 git 中强制执行提交消息格式

Python 编写代码 检查是否遵循PEP 8标准

git 提交回滚代码强制覆盖后如何恢复github上的提交记录

git 提交回滚代码强制覆盖后如何恢复github上的提交记录

我们如何在 GitHub 中强制执行强制审查,但仍允许从 CI 发布 Maven?