使用Git,我有一个预先提交的钩子,上面装有mvn clean install
。
我旨在测试在推送到远程仓库之前该命令是否正确执行。
问题在于此命令适用于我的当前目录,而不适用于本地git存储库(仅由添加的文件组成)。因此,有时会出现错误,因为在某些我没有添加的文件上,而没有这些文件就没有错误。
所以我的问题是我如何才能应用mvn clean install
的预提交,该预提交仅适用于本地回购中添加的文件?
答案 0 :(得分:0)
预提交的钩子外壳脚本示例:https://gist.github.com/dahjelle/8ddedf0aebd488208a9a7c829f19b9e8
注意第3行:
$(git diff --cached --name-only | grep -E '\.(js|jsx)$')
这将抓取git commit ...
的文件,这些文件通过管道传递以仅过滤.js或.jsx文件。您可以修改此脚本并删除管道。
第5行:用您的node_modules/...
修改mvn clean install
行。
根据需要修改脚本。
编辑:
下面的示例可能更符合您的用例:https://eing.github.io/technology/2016/01/28/Git-Pre-Commit-Hooks-Part1/
{ echo "
git stash -q --keep-index
# Using "mvn test" to run all unit tests and run plugins to assert
# * code coverage threshold >= 85% (using surefire, enforcer plugins)
# * FindBugs at low threshold errors (using findbugs-maven-plugin)
# * Checkstyle has 0 errors (using maven-checkstyle-plugin)
mvn clean install test
RESULTS=\$?
# Perform checks
git stash pop -q
if [ \$RESULTS -ne 0 ]; then
echo Error: Commit criteria not met with one or more of the following issues,
echo 1. Failure\(s\) in unit tests
echo 2. Failure to meet 85% code coverage
echo 3. Failure to meet low FindBugs threshold
echo 4. Failure to meet 0 Checkstyle errors
exit 1
fi
# You shall commit
exit 0"
} > pre-commit.sh
pushd .git/hooks
ln -s ../../pre-commit.sh pre-commit
chmod u+x pre-commit
popd