我设置了一些 git hook 来运行一些gulp
预提交命令。我基本上是跑步jshint
/plato
。我基本上想在两种情况下绕过这些:
- 修补程序分支(主/修补程序)
- git merge (或者找到一种在合并提交情况下不会崩溃的方法)
plato gulp 命令对源运行分析并生成一个 /reports/ 目录,用于跟踪一段时间内的复杂性。如果我们在修补程序分支上执行此操作,则在将它们合并回开发时会导致合并冲突。这里已经足够谈论简单的钩子了:
#!/bin/sh
if git diff --cached --name-only --diff-filter=ACM | grep '.js$' >/dev/null 2>&1
then
git stash -q --keep-index
./node_modules/.bin/gulp jshint
RESULT=$?
git stash pop -q
[ $RESULT -ne 0 ] && exit 1
git stash -q --keep-index
./node_modules/.bin/gulp plato
git add report/
git stash pop -q
fi
exit 0
现在的问题是,如果我在“报告”上存在合并冲突并且我解决了合并问题All conflicts fixed but you are still merging.
然后提交,它再次运行分析并暂存提交,当提交时它会抛出错误:
/Users/Nix/work/project/.git/modules/somesubmodule/MERGE_HEAD' 供阅读:没有这样的文件或目录。
该目录确实存在,但没有合并头...
所以我刚刚找到了一个我认为可以用来检测“merge_head”的命令
git rev-parse -q --verify MERGE_HEAD
如果 rev-parse 返回一个哈希值,则意味着我们当前处于合并状态。我可以用它来绕过这个逻辑。但会等待更有经验的人提供更好的建议。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)