如何拒绝推送* .bak文件,例如?
所以带有此扩展名并重命名为* .bak的新文件被git服务器阻止。
答案 0 :(得分:2)
你可以在这里编写一个简单的git pre-commit钩子脚本:
git diff --cached --name-status | while read status file; do
# do a check only on the .bak files
if [[ "$file" =~ ".bak$" ]] ; then
echo "Please remove *.bak files before committing"
exit 1
fi
done
答案 1 :(得分:2)
有一些pre-receive
挂钩工作:
# refuse certain file name extensions
if [ "$newrev" != "0000000000000000000000000000000000000000" ] && [ "$oldrev" != "0000000000000000000000000000000000000000" ]; then
if forbidden="$(git show --pretty="format:" --name-only --diff-filter=A "$oldrev..$newrev" | egrep '\.(bak|old)$')"; then
echo "============================";
echo "";
echo "FATAL ERROR: Forbiden file types detected:";
echo "";
printf '%s\n' "$forbidden"
echo "";
echo "============================";
exit 1;
fi
fi
它不检查这些文件的新分支。
答案 2 :(得分:0)
newrev和oldrev的值是多少? 除非指定特定的分支名称,否则git hook应该适用于存储库中的所有分支。 类似于:git rev-parse --symbolic --abbrev-ref