2012-04-06 39 views
6

Tôi đang cố gắng bọc đầu xung quanh Git và triển khai các trang web có (hoặc không có). Tôi đã được Googling và tìm kiếm và đọc, nhưng không thể tìm thấy một câu trả lời cho trường hợp cụ thể của tôi hoặc mối quan tâm. Tôi vẫn đang trong giai đoạn lập kế hoạch để thực hiện việc này, nhưng tôi muốn làm điều đó ngay từ đầu và tìm một luồng công việc phù hợp với tôi. Tôi sẽ cố gắng giải thích tình huống càng rõ ràng càng tốt:Triển khai trang web PHP từ kho Git

Tôi có một VPS từ xa chạy trang web trực tiếp của tôi trên www.example.com và phiên bản phát triển trên dev.example.com (chúng nằm trong/var/www/example/htdocs/và/var/www/example/subdomains/dev /).

Phát triển được chạy từ kho lưu trữ trống trong /opt/git/example.git/. Có một nhánh chủ và phát triển trong repo trần. Tôi và nhà phát triển khác đều có bản sao của kho lưu trữ này trên máy cục bộ của chúng tôi. Chúng tôi kéo từ nhánh phát triển và làm việc từ đó. Ý tưởng là dev.example.com đã cập nhật mã từ chi nhánh phát triển và một khi được kiểm tra chính xác, chúng tôi hợp nhất thành chính, thêm thẻ và cập nhật example.com (về cơ bản, điều này git flow). Phương pháp đầu tiên tôi tìm thấy trên kênh Git IRC sử dụng móc để cập nhật kho, nhưng điều này cảm thấy rất hạn chế và đôi khi cũng không mong muốn, tôi muốn chạy một lệnh trên máy chủ sau khi đẩy, cập nhật môi trường phát triển . Một lệnh khác (hoặc kịch bản lệnh shell) sẽ cập nhật trang web trực tiếp từ nhánh chính sau khi quá trình phát triển đã được hợp nhất). Tôi cũng tìm thấy Capistrano, nhưng điều đó có vẻ hơi hơn đầu tôi vào lúc này.

Trong khi đọc, tôi thấy rất nhiều người gợi ý tạo thêm hai bản sao trên điều khiển từ xa: một cho trang web trực tiếp và một cho trang web phát triển, kéo nhánh khi cần. Tuy nhiên điều này cũng để lại các tập tin kiểm soát phiên bản có thể truy cập thông qua web, đó là một cái gì đó tôi không muốn. Lý tưởng nhất, tôi muốn có một bản sao "sạch" mà không có bất kỳ tập tin hoặc thư mục git nào.

Tôi cũng tìm thấy một cách tiếp cận bằng cách sử dụng kho lưu trữ git, nhưng chạy lưu trữ git từ kho lưu trữ trống của tôi chỉ cho phép tôi lưu trữ nhánh chính. Tôi làm điều này bằng cách sử dụng lệnh git archive --format=tar HEAD | (cd /var/www/example/htdocs/ && tar xf -) trong /opt/git/example.git/.

Tôi cảm thấy cách tiếp cận git archive mang lại cho tôi gần nhất câu trả lời, nhưng tôi bị giới hạn bởi sự thiếu kiến ​​thức về Git của tôi. Tôi có thể thay đổi lệnh để sử dụng một nhánh thay vì HEAD (khi tôi cố gắng sử dụng origin/master thay vì HEAD, tôi đã nhận được một lỗi)? Có ai có thể chỉ cho tôi đúng hướng không?

Trả lời

4

Bạn có thể sử dụng bất kỳ cây-ish (bất kỳ chi nhánh, thẻ, băm sha1 vv) làm đối số để lưu trữ git. Bạn không thể sử dụng origin/master vì bạn đang ở trong repo trần và nó không có nguồn gốc. Bạn cần phải sử dụng tên chi nhánh địa phương, ví dụ:

git archive --format=tar develop 
+0

Tôi ước tôi có thể upvote 5 lần này. Rất đơn giản ... quá đơn giản. – Bram

+0

Cảm ơn Hehehe :) – ralphtheninja

+0

Một câu hỏi cuối cùng trước khi chấp nhận điều này: có thể loại bỏ các tệp .gitignore không? – Bram

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