2014-03-31 95 views
1

声明一个pre-commit钩子:是的,我读过Skip Git commit hooks,我了解-n标志,但是这不是我要找的。Git的设置,以跳过某些文件


我有一个预提交,为了做一些代码美化(含空格替换选项卡,去除双空行,...)运行挂钩。

但是,有一些用例我不想让钩子运行:例如,当我检查一些Makefiles时,我不能简单地用空格替换标签,所以我不得不跳过这些文件。

如果我是唯一的开发者,我会被罚款,以便防止钩从正在运行的-n标志,但也有使用用户界面的其他球员不知道-n标志(咳嗽 tortoisegit ),他们不会愿意指定一些标记到commit

除了直接在钩子中执行跳过和明显-n方式:有没有其他方法可以阻止预提交钩子运行?

+0

为什么不实施它在钩子?这将使它更便携*并且*不依赖于每个有Git设置的用户来适应你不是特别好编写的钩子。 – Biffen

回答

3

经过了类似的想法作为this pre-commit hook,你可以使用:

git diff --cached --name-only 

将列出那些即将提交的文件,然后你可以对它们进行过滤,以申请您的控件或跳过这些文件。

换句话说,对于每个文件,挂钩仍在每次提交时运行。
但是它的脚本足够聪明,可以将其测试应用于要提交的文件列表中的正确文件。