2009-09-21 6 views
9

Tôi có thiết lập kho lưu trữ git từ xa để phát triển tập trung trong nhóm của tôi. Tuy nhiên, máy chủ sản xuất mà chúng tôi triển khai các ứng dụng của chúng tôi hiện không có git chạy trên đó. Chúng tôi muốn sử dụng capistrano để triển khai các ứng dụng của chúng tôi làm thế nào chúng ta có thể thiết lập công thức triển khai của chúng tôi để 'kéo' từ kho git từ xa khi triển khai?triển khai với capistrano với repo git từ xa nhưng không có git chạy trên máy chủ sản xuất

Nói cách khác tôi có thể làm điều gì đó như thế này?

set :repository, "myserver.com/git/#{application}.git" 
set :scm, "git" 
set :deploy_via, :copy 

Trả lời

16

Giải pháp trong câu hỏi của bạn gần đúng. Bạn sẽ cần phải xác định kho git của bạn một chút khác nhau, mặc dù. Những gì bạn cần là:

set :repository, "[email protected]:/home/myproject" 
set :scm, "git" 
set :deploy_via, :copy 

Có thêm ví dụ về cách thiết lập triển khai git trong đá quý Capistrano của bạn theo lib/capistrano/recipes/deploy/scm/git.rb.

Điều gì xảy ra khi bạn sử dụng chiến lược triển khai copy là Capistrano sao chép git repo của bạn thành /tmp trên máy cục bộ của bạn, tars & nén kết quả rồi chuyển nó tới máy chủ qua sftp. Chiến lược sao chép cũng hỗ trợ sao chép thông qua scp, nhưng không có cách nào để nói với nó để làm điều đó mà không hack xung quanh trong nguồn một chút.

0

Các bạn đã thử một cái gì đó giống như

set :repository, "myserver.com/git/#{application}" 
set :scm, :none 
set :deploy_via, :copy 

Tôi chưa bao giờ cố gắng này, nhưng điều này có vẻ là loại phương pháp bạn sẽ cần phải đi về việc sử dụng. Thông tin chi tiết hơn một chút trong số Capistrano RDocs.

+0

Tôi lặp lại điều này. Sử dụng: bản sao là về tùy chọn duy nhất bạn có trừ khi bạn cài đặt một khách hàng git trên máy chủ của bạn. –

+0

Nếu bạn đặt 'scm' thành không, nó sẽ chỉ nén một bản sao của bất kỳ cái gì trên máy cục bộ của bạn và chuyển nó tới máy chủ thay vì làm một bản sao git cục bộ và chuyển nó. – Emily

+3

Thực ra, trên giao diện thứ hai, điều đó sẽ thất bại. Khi bạn đặt 'scm' thành none,' repository' được mong đợi là một đường dẫn thư mục, không phải là một URL. Giải pháp của bạn sẽ tìm thư mục 'myserver.com' trên máy cục bộ. Thông thường, khi 'scm' là không, bạn đặt' repository' thành ''.'' – Emily