第二次颠覆pre-commit hook无法正常工作

时间:2018-05-30 19:29:11

标签: bash svn tortoisesvn pre-commit

我正在尝试添加第二个预提交脚本,当我将它放在钩子中时似乎没有捕获。

第一个脚本基本上锁定文件不被编辑。第二个脚本查看路径并将字符串值与正在提交的文件进行比较,如果匹配则会出错。

javascript:void((function(){var loc = location.href; if (loc.indexOf('PageSpeed') >= 0) return; loc.indexOf("?") < 0 ? (location.href = loc+"?PageSpeed=off") : (location.href = loc+"&PageSpeed=off");})());

即使字符串存在,它也会成功提交文件。任何想法为什么它不会抓住它?

1 个答案:

答案 0 :(得分:0)

你的第一次测试:

if [ "$AUTHOR" == "testuser" ]; then
exit 0
fi

如果AUTHOR为testuser,它会导致中止(退出值为零)!

所以你的第二次测试:

 if [ "$AUTHOR" == "testuser" ]; then
        exit 0
 else
        #User is trying to modify testfile.txt
         echo "Only testuser can edit testfile.txt." 1>&2
         exit 1
 fi

这是不必要的,因为此时AUTHOR不是testuser

也许会更好而不是你的for循环:

if $SVNLOOK changed -t "$TXN" "$REPOS" | $GREP "^[U|A]" | $AWK '{print $2}' | grep -q 'path/to/file/testfile.txt'; then
  echo "Only testuser can edit testfile.txt." 1>&2
  exit 1
fi

if [[ "$PATH" == *path/to/file/testfile.txt ]]; then测试不起作用,因为此测试不能理解shell变量(并且由于*而最好用引号括起来。)

我会替换

for PATH in $COMPARE
do

if [[ "$PATH" == *path/to/look/at/only/* ]]; then

部分到

if echo ${COMPARE} | grep -q "path/to/look/at/only"; then