5

今天早上,我尝试对 Subversion 进行修改,突然发现我没有这样做的权限。

无法将“/svn/db/txn-protorevs/21000-ga9.rev”移动到“/svn/db/revs/21/21001”:
没有权限

查看 revs 目录,我注意到有人提交了第 21000 个修订版,并且由于某种原因缺少新目录的组写入权限。

    drwxrwsr-x 2 svn svn 24K 2008-10-27 10:04 19
    drwxrwsr-x 2 svn svn 24K 2008-12-18 07:13 20
    drwxr-sr-x 2 杰夫 svn 4.0K 2008-12-18 11:18 21

在该目录上设置组写入权限允许我提交,所以我可以再进行 1000 次修订。但是为什么会发生这种情况,我可以改变什么以确保它不会再次发生?

4

3 回答 3

8
于 2008-12-18T18:40:28.210 回答
2

解决此问题的最佳方法是通过服务器访问存储库。

如果您不介意未加密的通信(自从您使用 以来似乎就是这种情况file://),svnserve则很容易设置:

svnserve -d -r /svn

有关设置和配置身份验证的帮助,请参阅此参考。

令人遗憾的是,您必须分别设置每个用户的身份验证。

要连接到您的操作系统的身份验证,您需要设置一个 Apache SVN 服务器,这有点复杂,请参阅这些一般说明。您可以通过一些谷歌搜索找到适用于您的操作系统的特定说明。

最后,如果您想要在仍在使用的同时防止组写入权限被重置的最快途径file://,只需让每个人在他们的 shell 启动中设置一个正确的 umask (002),或者通过一个设置它的包装脚本使用 svn:

#!/bin/bash
# svnwrapper.sh
umask 002
/usr/bin/env svn $*

确保此 umask 在您的环境中不是安全问题。

于 2008-12-18T19:16:55.920 回答
0
于 2008-12-18T19:13:11.933 回答