与Capistrano&部署颠覆。工作副本已锁定

时间:2009-10-05 06:34:30

标签: svn capistrano

我正在部署到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没有显示任何内容。

3 个答案:

答案 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解决了这个问题。