Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 卡皮斯特拉诺+;Git:生产服务器的本地存储库_Ruby On Rails_Git_Deployment_Capistrano - Fatal编程技术网

Ruby on rails 卡皮斯特拉诺+;Git:生产服务器的本地存储库

Ruby on rails 卡皮斯特拉诺+;Git:生产服务器的本地存储库,ruby-on-rails,git,deployment,capistrano,Ruby On Rails,Git,Deployment,Capistrano,我正在尝试为我的应用程序执行“部署:冷”。git回购是本地的 我的部署服务器(即,我所有的东西都只有一台服务器,而我 不要在github上托管我的代码) 这是成绩单(出于隐私考虑,将我的应用程序名称替换为“myapp”) 这是我的deploy.rb: 我也试过了 set :repository, "deploy@localhost:/home/mrichman/git/myapp.git" 但这给了我 ssh: connect to host localhost port 22: Connec

我正在尝试为我的应用程序执行“部署:冷”。git回购是本地的 我的部署服务器(即,我所有的东西都只有一台服务器,而我 不要在github上托管我的代码)

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

这是我的deploy.rb:

我也试过了

set :repository, "deploy@localhost:/home/mrichman/git/myapp.git"
但这给了我

ssh: connect to host localhost port 22: Connection refused

非常感谢您的任何想法。

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

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


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

刚刚遇到同样的问题。关键是不要通过copy使用deploy\u,而是使用set:local\u存储库

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

我的也是

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

似乎已经奏效了。请记住,然后还要通过复制行删除deploy_。

确保您编写了正确的git回购,注意区分大小写!(我遇到了同样的问题,它刚刚解决)

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

如果设置了
本地存储库
,然后Capistrano使用部署服务器的
respository
值和开发服务器的
local\u respository

我的配置是这样工作的:

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

我已验证部署用户对/home/mrichman/git/myapp.git具有完全读取权限。感谢您的评论。请尝试登录部署用户帐户并手动键入失败的命令:“git ls remote/home/mrichman/git/myapp.git master”,它可能会给您带来相同的错误,如果是这样,请以mrichman用户的身份登录并以该用户的身份尝试。如果仍然出现错误,我打赌会发生,那么您将希望进入“/home/mrichman/git/myapp.git”目录并键入“git status”,如果失败,您需要检查该目录的内容是否确实包含git存储库。当我作为部署用户或自己的用户执行
git ls remote
时,我似乎获得了成功:
aa30ffc814fffd96b168ffec7224aeb9fe9df161参考/heads/master
。我相信
git status
只对工作树有效,而不是实际的存储库。作为一个实验,我将回购协议推到了Codaset,我的
cap deploy
就这样很好地工作了。我可以(也可能应该)继续这样做,因为在他们的web服务器上保存SCM是不安全的:)我刚刚遇到了这个问题,这是因为我在运行cap deploy:update as sudo。我的本地用户可以正确运行git ls remote,但sudo git ls remote给了我相同的错误。我最终发现,我的本地用户拥有远程git存储库的正确ssh密钥,但root用户没有。我现在拥有以下内容,但也失败了:set:repository,“file:///var/git/myapp.gitset:local_repository,“localhost:/var/git/myapp.git”在本地执行:“git ls remote localhost:/var/git/hireexchange.git master”ssh:connect to host localhost port 22:Connection refused您是在同一台机器上开发的吗?如果你是,我会想象:本地存储库,“file://var/git/myapp.git“那就行了。localhost应该替换为您从假定的远程工作站连接到的任何主机名。我还发现,如果您有子模块,那么在执行这样的部署时会遇到更多问题,因为这些模块被设置为指向远程URL。非常烦人,但是可以通过在服务器上使用.ssh/config在部署为.Hi-guys的用户下解决。如果有什么区别的话,我的本地和远程机器上的git需要不同的路径,因此我需要set:git_local/path/to/remote/git和set:git/usr/bin/git(注意,在开始时这些并不需要ssh)而不是
file:///...
line,它的工作方式简直是不可思议!感谢Capistrano 3,用
:repo_url
替换
:repo_url
<代码>:本地存储库似乎没有必要,至少对我来说是这样。
set :repository, "/home/#{user}/path/to/repo.git"
set :local_repository, "myserver.com:path/to/repo.git"