大家好。
在这篇文章中,我将分享我创建的一个Git预提交钩子,用于协助代码美化工作。
在Linux系统中,我使用两种不同的编码风格:用户空间风格和内核风格。
Linux内核有一套非常具体的编码规范,每一个提交到内核的补丁都必须遵守该规范。
Linux内核提供了一个非常简洁的脚本,名为 checkpatch.pl,可以用来检查你的补丁是否符合内核风格。它也可以处理完整的文件。
通常,在我准备向上游推送补丁之前,我会运行checkpatch脚本并修复所有错误(好吧,并不是所有错误,比如80列限制?真的有必要吗?)。
但是,我们能不能自动化这个过程呢?答案是肯定的,这时Git钩子就来帮忙了。
Git提供了在特定工作流阶段(如提交前或提交后)运行脚本的选项。
例如,如果你使用过Gerrit,你可能用过Gerrit提供的 commit-msg 钩子来生成嵌入到提交消息中的唯一Change-Id令牌。
在此情境下,一个特别有趣的钩子是 pre-commit 钩子。顾名思义,这个脚本在Git执行提交操作之前运行,并且可以访问Git对象。
我写的这个钩子,基本上会对提交中包含的所有文件运行,并对每个文件执行 astyle(Artistic Style)。
astyle 是一个非常棒的命令行工具,可在多种平台上运行。它根据一系列描述如何调整间距、缩进和其他各种美化事项的规则来工作。
然后,它会用修正后的风格重写原始文件。
你可以在Github上获取这个钩子。
欢迎随时fork并改进它。
可能的改进方向:
目前,astyle 作用于完整的对象(文件)。我更希望它只作用于提交中包含的差异部分。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)
公众号二维码

公众号二维码
