Jak*_*old 74 ruby deployment capistrano
我通过Capitrano从Git存储库进行了简单的部署.起初我正在部署GitHub表单,一切正常.但后来我将我的存储库移动到BitBucket,现在我已经到了
fatal: Could not parse object '9cfb...'.
Run Code Online (Sandbox Code Playgroud)
一旦我改变,问题就消失了
set :deploy_via, :remote_cache
Run Code Online (Sandbox Code Playgroud)
至
set :deploy_via, :copy
Run Code Online (Sandbox Code Playgroud)
但这并没有解决问题,只能绕过它.有什么办法我可以告诉capistrano只丢弃旧缓存吗?
Jus*_*ner 105
Capistrano 2.X
使用新地址删除并重新克隆存储库:
cd $deploy_to/shared
rm -rf cached-copy
git clone ssh://git@example.org/new/repo.git cached-copy
Run Code Online (Sandbox Code Playgroud)
修改您config/deploy.rb的使用新的repo:
set :repository, "ssh://git@example.org/new/repo.git"
set :scm, :git
set :deploy_via, :remote_cache
Run Code Online (Sandbox Code Playgroud)
再次部署:
cap deploy
Run Code Online (Sandbox Code Playgroud)
Capistrano 3.X
$deploy_to/repo目录config/deploy.rb(与2.X相同)cap deployrob*_*tus 45
我得说我不确定,因为我无法测试这个,但这应该有效:
cap deploy:cleanup -s keep_releases=0
Run Code Online (Sandbox Code Playgroud)
因为它从服务器擦除每个版本(缓存).
显然你也需要删除shared/cached-copy,因为根据下面的评论,上面的Capistrano调用似乎没有清除.
Gui*_*big 14
Capistrano 2及以下
SSH到您的服务器并更新./shared/cached-copy/.git/config部署文件夹的repo ,或者只删除./shared/cached-copy
Capistrano 3及以上
SSH到您的服务器并更新./repo/config部署文件夹的repo .
我用以下内容解决了这个问题deploy.rb:
namespace :deploy do
task :cope_with_git_repo_relocation do
run "if [ -d #{shared_path}/cached-copy ]; then cd #{shared_path}/cached-copy && git remote set-url origin #{repository}; else true; fi"
end
end
before "deploy:update_code", "deploy:cope_with_git_repo_relocation"
Run Code Online (Sandbox Code Playgroud)
它使部署速度稍慢,因此一旦您感到满意,所有部署目标都已赶上,就值得删除.