SVN钩子预提交钩子,以防止添加相同的文件名

时间:2015-04-02 10:31:22

标签: php bash svn svn-hooks

我的存储库中有类列表,我不希望将相同的类名添加两次。

我的目的是阻止提交相同的文件名,即如果abc.class.php已存在于任何目录中,则用户无法将abc.class.php添加到存储库。
我试过了

CHANGED=`$SVNLOOK changed -t "$TXN" "$REPOS" | grep "^[A]" | $AWK '{print $2}' | grep \.class.php$`
for FILENAME in $CHANGED
do  
    AlreadyFoundFile=$(locate $FILENAME ./var/www/html/REPO/)

    if [ $AlreadyFoundFile ]
    then
        echo "WARNING-  "$FILENAME" - class name already exist" 1>&2
        exit 1
    fi
done 

它检查/ var / www / html / REPO /(checkedOut Branch)中的已提交文件,但我想检查存储库中的文件。

有可能吗?

1 个答案:

答案 0 :(得分:2)

您可以使用svnlook tree

CHANGED=`$SVNLOOK changed -t "$TXN" "$REPOS" | grep "^[A]" | $AWK '{print $2}' | grep \.class.php$`
tree=$( svnlook tree "$REPOS" )

for FILENAME in $CHANGED
do  
    if grep -q "$FILENAME" <<< "$tree"
    then
        echo "WARNING-  "$FILENAME" - class name already exist" 1>&2
        exit 1
    fi
done

请注意,这不仅限于某个分支。如果需要,tree命令允许将路径指定为第二个参数,请参阅documentation