9

我通过 Git 存储库中的 capistrano 进行了简单的部署。

我想更改我正在使用的存储库,所以我基本上只是更改了

设置:存储库,“git@github.com:new_repository”

但是部署时出现以下错误:

致命:无法解析对象'9cfb ...'。

一旦我改变问题就消失了

设置:deploy_via,:remote_cache

设置:deploy_via,:复制

我也试过 deploy:cleanup 但我收到以下错误:

*`deploy:cleanup' 仅对匹配 {:except=>{:no_release=>true}} 的服务器运行,但没有匹配的服务器*

知道如何让 remote_cache 再次工作吗?

谢谢!

4

7 回答 7

13

使用 capistrano 3,避免删除 repo 文件夹:

  1. config/deploy.rb像 OP 所做的那样,更改您的 repo URL

  2. SSH 到您的服务器内部并更改 git repo 的远程 URL:

    ssh user@server.com  
    # Go the capistrano deploy root
    cd /capistrano/deploy/root/folder  
    # Go inside the folder names *repo*
    cd repo  
    # Manually change the git remote
    git remote set-url origin ...
    
于 2015-04-15T16:24:42.110 回答
11

卡皮斯特拉诺 < 3

从服务器的部署文件夹中将其修复到./shared/cached-copy/.git/config中。

或丑陋的方式来做到这一点:

从服务器的部署文件夹中删除共享/缓存副本。

卡皮斯特拉诺 > 3

从服务器的部署文件夹中将其修复到./repo/config中。

了解如何解决类似问题

这是因为您的服务器文件引用了旧的 repo,因此您必须找到并修复它。执行此操作以在文件中查找匹配项:

cd /path/to/your/project
grep -r OLD_REPO_NAME ./

现在您可以看到所有文件,包括您的 OLD_REPO_NAME 。如果它们在您的发布文件夹或当前文件夹中匹配,则您无需关心修复它们。但是您应该修复所有配置。

于 2014-05-26T06:04:44.500 回答
6

您可以更改 git url

shared/cached-copy/.git/config
于 2014-02-04T11:15:12.750 回答
6

Capistrano 3 用户的附加信息。Capistrano 将创建一个文件夹repo。所以结构看起来像这样:

current -> /var/www/preview/releases/20140612212305
releases
repo
revisions.log
shared

当您更改:repo_urlin时,deploy.rb您可以安全地删除该repo文件夹并运行部署。将再次创建该文件夹。您必须执行此步骤的原因是因为在 repo/config 中是旧的远程 url。

于 2014-06-12T21:36:17.183 回答
3

ssh 到您的生产服务器并删除共享/缓存文件夹的内容。存储在其中的 git ref 不再有效,因此它不起作用。

于 2013-05-26T23:56:25.843 回答
0

与此线程相关,更新您deploy.rb

set :repository, "git@github.com:new_repository"

使用 ssh deploy-user 访问您的服务器,cd Old_repository/repo然后sudo vim config

您会找到该行 url = git@github.com:username/old_repository.git,并且必须将其重命名为url = git@github.com:username/new_repository.git

不要忘记删除服务器上的 Old_repository 文件夹,或者只是在 New_repository 文件夹中重命名它!

于 2019-08-06T12:50:37.193 回答
0

只需将任务添加到 deploy.rb 即可自动同步它。

$ cap admin:fix_repo

  namespace :admin do
    desc 'Fix repo'
    task :fix_repo, :roles => :web do
      run "cd #{shared_path}/cached-copy && git remote set-url origin #{repository}"
    end
  end
于 2016-05-18T15:43:41.680 回答