[英]How to restrict directory creation to trunk, tags, branches with a pre-commit hook in SVN?
当前设置:
SVN实例中大约有7个存储库。 每个存储库都有多个应用程序,每个应用程序应有一个主干,标签和分支目录(别无其他)!
例如:
REPOSITORY-1
--> APP-1
--> trunk
--> tags
--> branches
--> APP-2
--> trunk
--> tags
--> branches
随着时间的流逝,我注意到开发人员偏离了此过程,创建了各种目录。 例如:
REPOSITORY-1
--> APP-1
--> src
--> READ-ME.txt
--> APP-2
--> build
--> random-file.java
--> build.xml
有没有一种方法可以使钩子有一个模式,从而限制该模式以拒绝任何尝试在应用程序下创建除主干,标记和分支以外的任何文件或目录的提交? 预先感谢您的任何帮助!
额外信息:我们的SVN服务器在RedHat盒子上。
在预提交中添加以下脚本以限制目录的创建:
REPOS="$1"
TXN="$2"
DIRCHAR="/"
SVNLOOK=/opt/csvn/bin/svnlook
echo $($SVNLOOK changed -t "$TXN" "$REPOS" | awk '{print $2}') > /tmp/files_$TXN.txt
sed -i 's/ /&\n/g' /tmp/files_$TXN.txt
while read line
do
LASTCHAR=`echo $line | awk '{print substr($0,length,1)}'`
if [ "$LASTCHAR" == "$DIRCHAR" ]; then
echo -e "Cannot commit directory." 1>&2
exit 1
fi
done < /tmp/files_$TXN.txt
在预提交的钩子中执行svnlook dirs-changed REPOS_PATH
并检查输出(| grep -v ...)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.