git预提交钩子用于代码美化
嗨。
在这篇文章中,我将分享一个我创建的用于辅助代码美化的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作用于完整的对象(文件)。我更希望它只作用于提交中涉及差异的对象。