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

时间:2010-09-20 06:24:20

标签: svn tortoisesvn locking

我们目前在checkout-modify-merge机制中使用SVN,而是想重新配置SVN服务器,以便我们将其更改为lock-modify-unlock机制。我们使用Tortoise SVN客户端,我看到可以单独更改单个文件的属性来强制执行“需要锁定”属性,但这太费力了,而我正在寻找一些方法,我们可以通过它来改变svn服务器端导致所有文件应用“needs-lock”属性。谢谢你的帮助!

3 个答案:

答案 0 :(得分:0)

阅读Automatically add svn:needs-lock
由于您使用Tortoise SVN,因此您应该特别阅读有关tsvn:autoprops的部分。

答案 1 :(得分:0)

在服务器端,您无法更改此类内容。什么可以阻止人们通过Hook脚本检查没有属性(svn:needs-lock)设置的文件。但这并不是推荐使用SVN的方法。

答案 2 :(得分:0)

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

以下是一些handy scripts and hooks for windows

对于unix,这里有http://www.codenition.com/shell-script-to-enforce-svnneeds-lock的变体,它实际上有效(在分叉的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"`"