Git Hooks
如同其他许多的版本控制系统一样,Git 也具有在特定事件发生之前或之后执行特定脚本代码功能(从概念上类比,就与监听事件、触发器之类的东西类似)。Git Hooks 就是那些在Git执行特定事件(如commit、push、receive等)后触发运行的脚本。
至于怎么执行哪些脚本文件,又是在何时触发这些脚本文件的,请参考这篇博文,里面写的很详细
Clang Format
Clang Format 是一个xcode可以安装的插件,但是,在xcode9以后就已经无法使用了,现在你可以使用XcodeClangFormat,不过这个不能像之前一样在保存的时候自动格式化。也是,使用Git Hooks + Spacecommander 的方式可以实现让你的git 仓库规范起来。
操作步骤
step1:cd project// 到你的项目根目录
step2:git clone https://github.com/square/spacecommander.git
step3: 执行:/Users/xavior/desktop/HooksDemo/spacecommander/setup-repo.sh
你可以看到项目目录下的 .git/hooks 目录中生成一个 pre-commit 文件(可执行钩子文件)
同时在项目目录下生成了一个 .clang-format 文件,其中 .clang-format 只是一个文件链接,指向了我们的 spacecommander 仓库中的这个文件,这个文件主要用来配置规范的选项。最重要的一个文件是 .git 隐藏文件夹下的 hook文件夹中的 pre-commit 脚本,这个脚本会在 git commit 之前执行用来检测代码是否符合规范。
OK,操作完成。接下来测试一下。
随便写几行代码
git add .
git commit -m '...'
你会看到如下的输出信息:
格式有问题,提交失败,按照他的要去,格式化相关文件
"/Users/xavior/desktop/HooksDemo/spacecommander"/format-objc-file.sh 'HooksDemo/ViewController.m'
打开项目:
可以看到已经完成格式化了,再进行提交。
提交成功。
demo地址希望对你有所帮助。