我正在部署到Capistrano的Debian服务器,由于锁定了工作副本而导致该服务器失败。我把它缩小到这个:
svn checkout http://myrepo.net/mysite/tags/1.0 /var/www/mysite/releases/1234
所以,如果我跑:
cap invoke COMMAND='svn checkout http://myrepo.net/mysite/tags/1.0 /var/www/mysite/releases/1234'
我收到错误:
svn: Working copy '/var/www/mysite/releases/1' locked
清理没有任何区别。从服务器运行相同的命令。当我在1234 /中列出文件时,我可以看到所有.svn和工作副本文件。
有人可以指出我正确的方向来解决这个问题吗?如何判断工作副本是否真的被锁定? svn status
没有显示任何内容。
答案 0 :(得分:1)
首先,您需要小心使用checkout而不是导出到可公开访问的URL。如果你还没有锁定Apache中的.svn目录,那么你就会打开一个潜在的安全漏洞。
除此之外,Capistrano是否有可能以不同的用户身份运行,而该用户根本没有更新此目录的权限?
答案 1 :(得分:1)
刚出现同样的问题,花了大约一个小时试图弄清楚发生了什么。
我注意到这个字符串的原因(输入密码之前的那个)
* executing "svn checkout -q -r422 svn://192.168.1.100/ /var/www/myhost/releases/20091102144836 && (echo 422 > /var/www/myhost/releases/20091102144836/REVISION)"
servers: ["192.168.1.200", "myhost"]
Password:
基本上我命令capistrano在我的capistrano部署文件中部署两次到同一台服务器(myhost = 192.168.1.200)并且它自己锁定了
希望它对某人有所帮助。
答案 2 :(得分:0)
错误原因是由运行在Samba共享上的Mac OSX和Linux之间的文件权限问题引起的。我不记得确切的细节,但不同的系统处理隐藏文件的权限不同,所以Samba使用SVN不喜欢的工作。
我通过迁移到GIT解决了这个问题。