0

我正在使用 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什么都不显示。

4

3 回答 3

1

首先,您需要小心使用结帐而不是导出到可公开访问的 URL。如果您还没有锁定 Apache 中的 .svn 目录,那么您将打开一个潜在的安全漏洞。

除此之外,Capistrano 是否有可能以不同的用户身份运行,而该用户根本没有更新此目录的权限?

于 2009-10-05T07:09:39.240 回答
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))并且它正在锁定自己

希望它可以帮助某人。

于 2009-11-02T14:53:10.870 回答
0

该错误原来是由运行在 Samba 共享上的 Mac OSX 和 Linux 之间的文件权限问题引起的。我不记得确切的细节,但不同的系统处理隐藏文件的权限不同,因此 Samba 使用了 SVN 不喜欢的解决方法。

我通过迁移到 GIT 解决了这个问题。

于 2009-12-05T03:19:13.467 回答