我想避免在除分支根之外的任何东西上创建 svn mergeinfo 属性。我们有一个主干分支和一些其他分支。
假设我对 svn 触发器一无所知,我需要遵循哪些步骤来设置一个预提交挂钩,以防止将 mergeinfo 属性添加到除分支根之外的任何内容?
主干位于存储库的基础“/trunk”中,所有分支都在“/branches/foo”中
我想避免在除分支根之外的任何东西上创建 svn mergeinfo 属性。我们有一个主干分支和一些其他分支。
假设我对 svn 触发器一无所知,我需要遵循哪些步骤来设置一个预提交挂钩,以防止将 mergeinfo 属性添加到除分支根之外的任何内容?
主干位于存储库的基础“/trunk”中,所有分支都在“/branches/foo”中
以下应该工作。您的存储库已经在主干上有 svn:mergeinfo,因此您永远不希望任何人再次添加。
顺便说一句,我们的实际钩子还确保每次提交都伴随着一条日志消息,并且还可以防止通过 repo 浏览器删除我们的一些重要的顶级目录。
@echo off
set logfile=%TEMP%\%2.txt
"c:\program files\subversion\svnlook" log -t %2 %1 > %logfile%
for /f "tokens=1,2*" %%i in (%logfile%) do (
if %%i==UU goto checkmergetracking
)
for /f "tokens=1,2*" %%i in (%logfile%) do (
if %%i==_U goto checkmergetracking
)
del %logfile%
exit 0
:checkmergetracking
"c:\program files\subversion\svnlook" diff -t %2 %1 > %logfile%
find "Added: svn:mergeinfo" %logfile%
if ERRORLEVEL 1 goto nomergeinfo
del %logfile%
echo "Addition of Merge Info Not Allowed" >&2
exit 1
:nomergeinfo
del %logfile%
exit 0