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


SVN hook pre commit hook to prevent addition of same filename

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

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

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)中提交的文件,但我想检查Repository中的文件

有可能的方法吗?

您可以使用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命令允许将路径指定为第二个参数,请参阅文档。