我很久以前就创建了该存储库,当时我是唯一的用户。现在我需要添加另一个用户,因此我创建了一个用户组,在其中添加了这两个用户并执行了以下操作:
chmod -R user1:usergroup svnrepo/*
chown -R 0770 svnrepo/*
现在我们都有能力更新和提交,但问题是,当我们其中一个人提交时,它显然会更改svnrepo/db/current
(提交的用户)的所有者,而另一个人将失去对存储库的访问权限,直到我手动设置正确的权限。又是主人。
您知道如何解决这个问题吗?这是非常烦人的...
答案1
我不认为这是共享 SVN 存储库访问权限的推荐方法。您正在使用该file:///
协议来访问存储库,通常不鼓励这样做。请参阅此 StackOverflow 问答,标题为:Windows 网络共享上的 svn 存储库。
file:// 访问仅用于本地单用户访问,特别是测试和调试。当您想要共享存储库时,您确实需要设置适当的服务器,并且它并不像您想象的那么困难。读名为“访问存储库”的部分有关选择和设置服务器的指南。
这都儿一样SVN Bean Book 中也呼应了这种观点。
不要被让所有用户直接通过 file:// URL 访问存储库的简单想法所诱惑。即使每个人都可以通过网络共享轻松访问该存储库,但这也是一个坏主意。它消除了用户和存储库之间的任何保护层:用户可能会意外(或故意)损坏存储库数据库,很难使存储库脱机进行检查或升级,并且可能导致混乱的文件权限问题(看到名为“支持多种存储库访问方法”的部分)。请注意,这也是我们警告不要通过 svn+ssh:// URL 访问存储库的原因之一 - 从安全角度来看,它实际上与本地用户通过 file:// 访问相同,并且可能会带来所有相同的问题如果管理员不小心。
通读 SO 问答。有很多人证明他们遇到了问题,这样做导致存储库损坏。
最好设置一个实际的svnserve
守护进程并让它控制对存储库的访问。设置起来非常简单。
答案2
我建议设置 svnserve,并通过 svn:// 或 ssh+svn:// 访问存储库
或者,如果您希望继续使用 file:// 方法,请确保您和您的朋友在同一组中,并将 repo 目录设置为使用设置的组权限
usermod -a -G <group> <user>
chgrp <group> /path/to/repo
chmod 2770 /path/to/repo
这将确保创建的任何新文件都将继承组权限,并有助于缓解文件系统权限问题。