Capistrano + Git:生产服务器本地的存储库(Capistrano + Git : repository local to production server)

问题

我正在尝试为我的应用执行“ deploy:cold”。 git repo是我的部署服务器本地的(即,我只有一台服务器来存放所有内容,并且我不在github上托管我的代码)。

这是成绩单(出于隐私考虑,将我的应用程序名称替换为“ myapp”)

  * executing `deploy:cold'
  * executing `deploy:update'
 ** transaction: start
  * executing `deploy:update_code'
    executing locally: "git ls-remote /home/mrichman/git/myapp.git master"
fatal: '/home/mrichman/git/myapp.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
*** [deploy:update_code] rolling back
  * executing "rm -rf /var/www/myapp.com/releases/20100218203108; true"
    servers: ["myapp.com"]
Password:
    [myapp.com] executing command
    command finished
Command git ls-remote /home/mrichman/git/myapp.git master returned status code 32768

这是我的deploy.rb:http://pastie.org/831424

我也尝试过

set :repository, "deploy@localhost:/home/mrichman/git/myapp.git"

但这给了我

ssh: connect to host localhost port 22: Connection refused

任何想法表示赞赏。

回答1

只是遇到了同样的问题。 关键是不要使用deploy_via复制而是设置:local_repository

应将其设置为用于从开发计算机/笔记本电脑访问存储库的URL。

所以我有

set :repository, "file:///srv/git/myapp.git"
set :local_repository, "nameOfHostFromSSHConfig:/srv/git/myapp.git"

似乎奏效了。 请记住,然后还要删除deploy_via复制行。

回答2

以您要部署到的站点的用户身份登录,然后尝试尝试此操作以查看您的用户是否有权访问该目录:

ls -la /home/mrichman/git/myapp.git

如果出现“拒绝权限”错误,则必须确保在存储库的封闭目录上设置许可,以允许部署脚本访问文件。

回答3

确保以区分大小写的方式编写了正确的git repo! (我遇到了同样的问题,它刚刚解决了)

回答4

我的问题实际上与已知主机问题有关。 我要做的就是确保远程git服务器位于我的已知主机中(第一次尝试SSH进入该主机将提示您自己添加它),并且它就像一个魅力一样工作。

回答5

如果local_repository设置,然后Capistrano的使用值respository从部署服务器和价值local_respository从开发服务器。 或类似的东西。

我的配置如下所示:

set :repository, "/home/#{user}/path/to/repo.git"
set :local_repository, "myserver.com:path/to/repo.git"

更多相关内容:请点击查看