代码之家  ›  专栏  ›  技术社区  ›  Rimian

与Capistrano&Subversion一起部署。工作副本已锁定

  •  0
  • Rimian  · 技术社区  · 16 年前

    我正在部署一个带有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 回复  |  直到 11 年前
        1
  •  1
  •   Pavel K.    16 年前

    只是遇到了同样的问题,花了大约一个小时的时间试图弄清楚到底发生了什么。

    我在查看这个字符串(输入密码前的字符串)时注意到了原因。

      * 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 deploy文件中部署两次到同一个服务器(myhost=192.168.1.200),它自己也锁定了。

    希望它能帮助别人。

        2
  •  1
  •   Steven Robbins    16 年前

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

    除此之外,是否有可能Capistrano以一个完全没有更新此目录权限的用户身份运行?

        3
  •  0
  •   Rimian    16 年前

    这个错误是由运行在Samba共享上的mac osx和linux之间的文件权限问题引起的。我不记得具体细节,但不同的系统处理隐藏文件的权限不同,所以Samba使用的是SVN不喜欢的解决方案。

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

    推荐文章