2011-11-19 54 views
2

最近,我正在开发的一个项目在Github上更改了源代码库。Capistrano在deploy.rb之后寻找旧的Github repo更改为新的repo

deploy.rb已更新为正确指向新的github帐户,但是当我运行cap staging deploy时,它会查找旧的repo。

cap staging deploy 
     * executing `staging' 
     * executing `deploy' 
     * executing `deploy:updatify' 
     * executing "cd /home/deploy/example/current; git fetch origin; git reset --hard origin/staging" 
     servers: ["example.com"] 
     Password: 
     [example.com] executing command 
    ** [out :: example.com] ERROR: oldusername/example.git doesn't exist. Did you enter it correctly? 
    ** [out :: example.com] fatal: The remote end hung up unexpectedly 
    ** [out :: example.com] HEAD is now at 7c92a69 adding changes 
     command finished in 4148ms 
     triggering after callbacks for `deploy:updatify' 
     * executing `bundle:install' 
     * executing "cd /home/deploy/example/current && bundle install --gemfile /home/deploy/example/current/Gemfile --path /home/deploy/example/shared/bundle --deployment --quiet --without development test" 
     servers: ["example.com"] 
     [example.com] executing command 
     command finished in 7442ms 
     * executing `deploy:restart' 
     * executing "cd /home/deploy/example/current; [ -f tmp/pids/unicorn.pid ] && kill -USR2 `cat tmp/pids/unicorn.pid` || bundle exec unicorn_rails -c ./config/unicorn.rb -E staging -D" 
     servers: ["example.com"] 
     [example.com] executing command 
     command finished in 94ms 

我试图寻找一个缓存拷贝目录这里提到:Capistrano still trying to connect to my old repo,但我的服务器上,没有缓存拷贝目录。

它在哪里还在引用旧的存储库?

deploy.rb:

require 'bundler/capistrano' 

load 'config/deploy/nginx' 
load 'config/deploy/unicorn' 
load 'config/deploy/updatify' 

# Base Settings ############################################################ 

set :user,   'deploy' 
set :application, 'example' 
set :use_sudo,  false 
set :scm,   :git 
set :repository, '[email protected]:new_repo_user/example.git' 
set :deploy_to,  "/home/#{user}/#{application}" 

# Fake using releases to just use git 
set :current_release, current_path 

ssh_options[:paranoid] = false 
default_run_options[:pty] = true 

# Multistage ############################################################### ### 

task :production do 
    server 'exampleprod.com', :app, :web, :db, :primary => true 
    set :branch,  'origin/production' 
    set :environment, 'production' 
    set :environment_database, defer { production_database } 
    set :environment_dbhost, defer { production_dbhost } 
end 

task :staging do 
    server 'example.com', :app, :web, :db, :primary => true 
    set :branch,  'origin/staging' 
    set :environment, 'staging' 
    set :environment_database, defer { environment_info["database"] } 
    set :environment_dbhost, defer { environment_info["host"] } 
end 

回答

3

原来有仍然在.git/config文件中的原始资源库的参考。

我改变了这个:

[remote "origin"] 
     fetch = +refs/heads/*:refs/remotes/origin/* 
     url = [email protected]:oldusername/example.git 

要这样:

[remote "origin"] 
     fetch = +refs/heads/*:refs/remotes/origin/* 
     url = [email protected]:new_repo_user/example.git 

而且Capistrano的开始做正确的事情。

+2

请注意,这需要在您的'current'文件夹中的服务器上完成。为我工作。 – Danny

+1

另请注意,从Capistrano 3开始,您需要编辑app_root/repo目录中的配置文件,而不是符号链接的当前。 –

0

更改存储库组后,我遇到了类似的问题。 事实证明,从服务器中删除repo目录修复了旧的repo版本参考的问题。