设置SVN服务器以启用版本控制的锁定-修改-解锁机制

设置SVN服务器以启用版本控制的锁定-修改-解锁机制,svn,tortoisesvn,locking,Svn,Tortoisesvn,Locking,我们目前正在签出-修改-合并机制中使用SVN,我想重新配置SVN服务器,以便将其更改为锁定-修改-解锁机制。我们使用Tortoise SVN client,我发现可以单独更改单个文件的属性来强制执行需求锁属性,但这太费力了,我正在寻找一些方法,通过这些方法,我们可以更改SVN服务器端的某些内容,从而使所有文件应用需求锁属性。谢谢你的帮助 阅读 由于您使用的是Tortoise SVN,因此您应该特别阅读有关的部分。在服务器端,您不能更改这样的内容。通过Hook脚本,可以防止人们签入没有属性svn:

我们目前正在签出-修改-合并机制中使用SVN,我想重新配置SVN服务器,以便将其更改为锁定-修改-解锁机制。我们使用Tortoise SVN client,我发现可以单独更改单个文件的属性来强制执行需求锁属性,但这太费力了,我正在寻找一些方法,通过这些方法,我们可以更改SVN服务器端的某些内容,从而使所有文件应用需求锁属性。谢谢你的帮助

阅读
由于您使用的是Tortoise SVN,因此您应该特别阅读有关的部分。

在服务器端,您不能更改这样的内容。通过Hook脚本,可以防止人们签入没有属性svn:needs lock set的文件。但这不是使用SVN的推荐方法。

最好的选择是强制所有提交的文件都具有SVN:needs lock属性。关于如何做到这一点,有几个链接

这里有一些

对于unix,这里有一个变体,它实际上在分叉while循环中工作,退出1的行为不符合预期

将以下代码添加到/path/to/repo/hooks/pre-commit

# Make sure every file has the svn:needs-lock property set
while read REPOS_PATH
do
if [[ "$REPOS_PATH" =~ "^(A|M|U)[[:blank:]]{3}(.*)" ]]; then
    if [ ${#BASH_REMATCH[*]} -ge 2 ]; then
        if [ -z "`$SVNLOOK propget -t \"$TXN\" \"$REPOS\" svn:needs-lock \"${BASH_REMATCH[2]}\"`" ]; then
            STATUS="1"
            echo "$REPOS_PATH must have the svn:needs-lock property set">&2
            exit 1
        fi
    fi
fi
done <<< "`$SVNLOOK changed -t "$TXN" "$REPOS"`"