2012-10-07 35 views
8

Tôi đã tìm thấy hai phương pháp phổ biến để tự động triển khai các cập nhật trang web bằng cách sử dụng repo từ xa.Sử dụng 'git pull' so với 'git checkout -f' để triển khai trang web

Đầu tiên yêu cầu repo được nhân bản vào gốc tài liệu của máy chủ web và trong móc sau khi cập nhật, sử dụng git pull.

cd /srv/www/siteA/ || exit 
unset GIT_DIR 
git pull hub master 

Cách tiếp cận thứ hai thêm 'cây làm việc tách biệt' vào kho trống. Các hậu nhận móc sử dụng thanh toán git -f để tái tạo ĐẦU của kho lưu trữ vào thư mục làm việc đó là ví dụ máy chủ web gốc tài liệu

GIT_WORK_TREE=/srv/www/siteA/ git checkout -f 

Phương pháp đầu tiên có lợi thế rằng những thay đổi được thực hiện trong các trang web thư mục làm việc có thể được cam kết và đẩy trở lại repo trần (tuy nhiên các tập tin không nên được cập nhật trên máy chủ trực tiếp). Cách tiếp cận thứ hai có lợi thế là thư mục git không nằm trong thư mục gốc của tài liệu, nhưng điều này có thể dễ dàng được giải quyết bằng cách sử dụng htaccess.

Có một phương pháp khách quan tốt hơn so với phương pháp hay nhất khác không? Tôi còn thiếu những ưu điểm và nhược điểm nào khác?

Trả lời

4

Về mặt quản lý phát hành (tại đây triển khai), tốt nhất là nên có môi trường đích độc lập với cơ chế phát hành.
Nói cách khác, giải pháp thứ hai (checkout -f) sẽ sửa đổi cấu trúc thư mục web đơn giản, không có bất kỳ thư mục con nào khác không phải là một phần của thư mục đó (như thư mục .git).
Tôi sử dụng nó, ví dụ: trong "using git to deploy my node.js app to my production server".

Điều đó giảm thiểu bất kỳ tác dụng phụ nào và cho phép môi trường sản xuất hoạt động chỉ với những gì nó cần để chạy mà không gây nhiễu.

+0

Không rõ ràng với tôi về những rủi ro/nhược điểm của việc không có 'môi trường mục tiêu độc lập với cơ chế giải phóng'. Tất cả những gì tôi có thể nghĩ đến là những gì bạn đã đề cập - thư mục .git có thể dễ dàng giảm nhẹ bằng cách sử dụng các quy tắc .htaccess cần thiết. Tôi đang thiếu gì? Bất kỳ lời khuyên nào được đánh giá cao. – Michelle

+2

@Michelle đơn giản là, về quản lý phát hành, bạn cố gắng thực thi kiểm soát chặt chẽ những gì được đặt/triển khai/quản lý trên nền tảng sản xuất: nó chỉ là những gì cần thiết để * chạy * ứng dụng, không phải bất kỳ thứ gì khác, không phải là công cụ phụ (git). Điều đó nói rằng, đây là một "thực hành tốt nhất nói chung", không phải là một quy tắc tuyệt đối, và trong bối cảnh của bạn, bạn hoàn toàn có thể giữ cho repo git trực tiếp trên nền tảng prod của bạn. – VonC

Các vấn đề liên quan