2011-10-03 16 views
17

Tôi muốn tự động sao chép các tệp đã cam kết vào một thư mục nhất định để chúng có thể được xem trong trình duyệt, nhưng tôi muốn thực hiện điều này mà không cần phải tạo một kho lưu trữ trống phản chiếu kho lưu trữ chính (như được hiển thị here) và tôi muốn điều này xảy ra trên cam kết.Móc nối hậu cần đơn giản git để sao chép các tệp đã cam kết vào một thư mục nhất định

Có cách nào đơn giản để tạo một móc đọc tệp nào đã được cam kết và sao chép chúng/cập nhật chúng trên máy chủ web trực tiếp không?

Ví dụ: Tôi có thư mục có tên /example.com và một kho lưu trữ git. Tôi muốn rằng khi tôi cam kết index.html trong kho lưu trữ, tệp index.html tương ứng từ /example.com sẽ được cập nhật với nội dung của tệp đã cam kết

Trả lời

23

Cách tốt nhất là tạo một post-commit chạy git checkout -f với cây công việc được đặt thành thư mục được máy chủ web của bạn tiếp xúc và thư mục git được đặt thành thư mục .git trong kho lưu trữ phát triển của bạn. Ví dụ, bạn có thể tạo một tập tin .git/hooks/post-commit rằng đã làm:

#!/bin/sh 
unset GIT_INDEX_FILE 
export GIT_WORK_TREE=/example.com/ 
export GIT_DIR=/home/whoever/development/web-project/.git/ 
git checkout -f 

Hãy cẩn thận với điều này, tuy nhiên - những -f nghĩa là git có thể loại bỏ hoặc ghi đè lên tập tin để làm /example.com/ trận đấu cây trong cam kết gần đây nhất của bạn.

(Hãy nhớ thực hiện tệp .git/hooks/post-commit cũng có thể thực thi.)

+0

Công việc này hoàn hảo. Cảm ơn bạn – viorel

+0

Trên cửa sổ, là tập lệnh mong đợi đường dẫn đầy đủ và cú pháp là gì? Cảm ơn! – andli

+0

@andli Tôi đang sử dụng msysgit và nó hoạt động bằng cách sử dụng cùng một đường dẫn bạn sẽ sử dụng trong cửa sổ git bash. – Shlomo

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