我最近将我的svn存储库移动到具有相同路径结构的新服务器,没有任何障碍。我更改了DNS,以便域名指向新服务器(并且interweb DNS管道知道这一点)。因此,我不必更新工作副本的repo URL(在svn信息中)。我可以检查一份新副本,但是提交更改会给我带来错误:
me$ svn ci -m "testing svn ci on new server"
Sending trunk/www/index.php
Transmitting file data .svn: Commit failed (details follow):
svn: Can't open file '/var/svn/webrepo/db/txn-current-lock': Permission denied
好的,所以我尝试sudo相同的签到命令,出现此错误:
svn: Commit failed (details follow):
svn: To better debug SSH connection problems, remove the -q option from 'ssh' in the [tunnels] section of your Subversion configuration file.
svn: Network connection closed unexpectedly
我在论坛中看到了类似的问题,其解决方案是更新工作副本URL或修复远程权限。在我的情况下,URL应该没问题,而且我一直试图修复权限。我可以和我的本地用户一起使用。这是远程存储库权限:
drwxrwxr-x 6 svn svn 4096 Feb 20 07:33 webrepo
svn组包含我使用的远程用户帐户。我已经尝试chown'ing -R直接给该用户,以及root用户并没有运气。谢谢你的帮助!
答案 0 :(得分:3)
将svn移动到在linux上运行的新服务器后,我遇到了同样的问题。 SVN作为www-data用户&回购&所有文件和子目录必须由www-data拥有。大多数情况下是这种情况,但有些文件由root拥有。通过运行
chown www-data 'new-repo' -R
它解决了我的问题。
答案 1 :(得分:0)
同一个仓库中的所有文件都有此权限:drwxrwxr-x?用于测试目的的用户是否在适当的组中?我的意思是上面的这个权利,只有所有者用户和所有者组有权写入文件,如果你尝试提交一些东西,它可能会带来麻烦。
你有没有试过比较
在两台机器上?
答案 2 :(得分:0)
你忘了用明文提到
阅读SVN手册中的Tunneling over SSH主题,以深入了解权限问题,主要围绕此文本
在此示例中,Subversion客户端正在调用本地ssh 进程,连接到host.example.com,以用户身份进行身份验证 harryssh(根据SSH用户配置),然后产生一个 以用户身份运行的远程计算机上的私有svnserve进程 harryssh。
和“SSH配置技巧”
简而言之 - 你有错误的所有者,也许是错误的权限