2009-12-23 6 views
5

Tôi đã tìm kiếm tất cả các vấn đề Capistrano có liên quan, nhưng không thể tìm thấy thứ gì đó thậm chí làm sáng tỏ mọi thứ ở đây cho tôi.Capistrano và Git, Đang hủy hoại cuộc đời tôi. "Không thể giải quyết sửa đổi cho [HEAD] trên kho lưu trữ ..."

git version 1.6.4.2 
Capistrano v2.5.10 

Về cơ bản, khi tôi chạy kịch bản nắp deploy.rb của tôi, nó kết nối đến máy chủ, bắt đầu thực hiện các triển khai: nhiệm vụ cập nhật, sau đó trong triển khai: update_code nhiệm vụ:

*** [deploy:update_code] rolling back 
    * executing "rm -rf /home/user_name/public_html/project_name/releases/20091223094358; true" 
    servers: ["project_name.com"] 

Nó thất bại với các lỗi sau:

/Library/Ruby/Gems/1.8/gems/capistrano-2.5.10/lib/capistrano/recipes/deploy/scm/git.rb:231:in `query_revision': Unable to resolve revision for 'master' on repository 'ssh://[email protected]_ip:path_to_git_repository'. (RuntimeError) 

Dưới đây là kịch bản triển khai của tôi, tôi đã cố gắng bao gồm và bỏ qua:

set: branch 'master'

Tôi cũng nghĩ rằng đường dẫn đến kho lưu trữ bị tắt, nhưng tôi đã thử mọi hoán vị (tuyệt đối, không tuyệt đối, hậu tố .git, không có hậu tố). Có chắc chắn là một kho git trống ở con đường tôi đang trỏ đến.

** Tôi có nhiều dự án được lưu trữ trên một lát. Các dự án khác cũng là một dự án đường ray, nhưng đang chạy SVN. Việc triển khai Capistrano hoạt động tốt.

Bất kỳ con trỏ nào đi đúng hướng hoặc bất kỳ ý tưởng nào sẽ giúp giảm lượng nước uống mà tôi đang lên kế hoạch nếu tôi không thể tìm ra điều này. (Đường dẫn/IP bị xáo trộn, đừng hack tôi bro!)

set :application, "project1" 
set :user, "username" 
set :repository, "ssh://[email protected]/home/git/project1.git" 
set :branch, "master" 

set :port, 696969 

set :deploy_to, "/home/username/public_html/#{application}" 

set :scm, :git 

role :app, application      
role :web, application      
role :db, application, :primary => true 

# deployment via remote client (workstation) 
set :deploy_via, :copy 
set :runner, user 

# mod_rails 
namespace :deploy do 
    desc "Restarting mod_rails with restart.txt" 
    task :restart, :roles => :app, :except => { :no_release => true } do 
    run "touch #{current_path}/tmp/restart.txt" 
    end 

    [:start, :stop].each do |t| 
    desc "#{t} task is a no-op with mod_rails" 
    task t, :roles => :app do ; end 
    end 
end 

Đây là bài đăng có liên quan nhất (thậm chí có liên quan thậm chí rất quan trọng), nhưng tôi thực sự không thể biết được họ đang sửa lỗi gì. Tôi khá mới với cấu hình git/capistrano.

https://capistrano.lighthouseapp.com/projects/8716/tickets/56-query_revision-unable-to-resolve-revision-for-head-on-repository

Trả lời

4

Ok Tôi có vẻ đã sửa nó.

Về cơ bản, vì tôi có 2 kho lưu trữ riêng biệt trên máy chủ từ xa, tôi nghĩ người dùng "git" đã thất bại vì tôi chưa đăng ký cặp khóa ssh cho người dùng git. Điều đó giải thích tại sao một trong các tập lệnh deploy.rb của tôi hoạt động bình thường, trong khi đoạn mã này không phải.

Trong liên kết tôi đăng trong câu hỏi, một trong những bình luận chỉ ra vấn đề:

https://capistrano.lighthouseapp.com/projects/8716/tickets/56-query%5Frevision-unable-to-resolve-revision-for-head-on-repository

Note this error is also displayed if you are using multiple github keys per http://capistrano.lighthouseapp .... and you do not have these keys and a corresponding entry in your .ssh/config on the workstation you're running the deploy from. so the ls-remote is run locally. is there a way to reference the repository at github.com for this request while the remote deploy uses [email protected]:user/project1.git

Ngoài ra, xem các liên kết sau để biết thêm chi tiết, vì vấn đề toàn ssh sẽ áp dụng ngay cả khi bạn không sử dụng github.

http://github.com/guides/multiple-github-accounts

0

Đối với tôi Capistrano triển khai với Git chỉ có vẻ làm việc khi thiết set :copy_cache, true

1

Cả hai máy trạm của bạn và máy chủ của bạn phải có khả năng để đạt được kho tại địa chỉ xác định, nếu không thì bạn có thể có để đặt: local_repository về cách bạn truy cập nó từ workstaion của bạn và: kho lưu trữ là cách máy chủ của bạn nên truy cập nó.

+0

Cảm ơn bạn! Tôi không biết bạn có thể đặt cả hai biến, nhưng nó đã hoạt động! – Andrew

0

Tôi chỉ sử dụng capistrano với git một lần, nhưng không bao giờ được sử dụng hoặc thấy việc sử dụng ssh: // trong định nghĩa kho lưu trữ.

Hãy thử sử dụng set :repository, "[email protected]/home/git/project1.git" thay vì

0

Đảm bảo nhánh bạn đang triển khai tồn tại.

set :branch, "upgrade-to-2013.4.3" 

không bằng

set :branch, "upgrade-to-2013.3.4"