2011-02-08 11 views
10

tôi đã sử dụng hướng dẫn này để sử dụng git để autopublish thay đổi của tôi trên trang web của tôi khi tôi đẩy vào kho lưu trữ nguồn gốc git từ xa của tôi:Sử dụng git để xuất bản vào một trang web

http://www.lwp.ca/james/2010/03/using-git-to-manage-online-website-projects/

Dưới đây là của tôi/móc/hậu cập nhật file:

cd ../../public_html/dir/wbg 
env -i git pull 

Dưới đây là cấu trúc của tôi thư mục:

/home/git/wbg.git < - kho git từ xa của tôi

/home/public_html/dir/WBG < - thư mục web của tôi

Khi tôi chạy

git push origin master 

Các cập nhật kho nhưng thư mục web của tôi vẫn còn trống. Bất kỳ ý tưởng?

Chỉnh sửa: nếu bất kỳ lưu lượng truy cập nào trong tương lai nhìn thấy điều này, vấn đề thực sự của tôi là BOTH nguồn gốc từ xa VÀ thư mục trang web đích của bạn phải là kho lưu trữ git. Bạn không thể chỉ cần thiết lập nó để sao chép dự án của bạn vào một thư mục mới trừ khi thư mục đó cũng là một repo git.

+0

bạn cũng đã thực hiện 'chmod + x' như được đề xuất trong bài viết chưa? – eckes

+0

vào liên kết được cung cấp trong câu hỏi này là chết –

Trả lời

6

Không có nhiều thứ để tắt, nhưng tôi có thể báo cáo rằng tôi đã sử dụng thành công phương pháp này.

Vì mục đích của mình, tôi gọi kho lưu trữ máy chủ trống của mình là "Hub" và kho lưu trữ web của tôi là "Prime". Đảm bảo rằng bạn đã khởi tạo đúng kho lưu trữ git trong thư mục máy chủ htdocs của bạn (Prime) và đã đẩy các thay đổi vào kho lưu trữ trống (Hub) hoặc kéo chúng vào. Kho ảnh

Đây là móc tôi sử dụng, là trong thư mục móc của kho lưu trữ Hub của tôi:

#!/bin/sh 

echo 
echo "*** Pulling changes into Prime" 
echo 

cd /path/to/htdocs/ || exit 
unset GIT_DIR 
git pull hub master 

exec git-update-server-info 

Đảm bảo điều này có thể thực thi được! Nếu nghi ngờ, chỉ cần chỉnh sửa tệp post-update.sample và xóa tiện ích mở rộng .sample khi hoàn tất. Các văn bản lặp lại cho phản hồi tốt đẹp rằng việc sao chép thực sự diễn ra. Nếu bạn không thấy văn bản đó, thì nó sẽ không kéo các thay đổi. Và nếu bạn sẽ không gọi kho lưu trữ từ xa của bạn là "hub", hãy thay thế nó bằng "origin" hoặc bất kỳ thứ gì bạn quyết định sử dụng.

Như một biện pháp phòng ngừa để Thủ tướng Chính và địa phương kho của tôi không nhận được quá ra khỏi Whack, tôi có điều này trên cương vị Thủ post-commit móc tôi:

#!/bin/sh 

echo 
echo "*** Pushing changes to Hub" 
echo 

git push hub 

Sau đó, tôi chỉ có thể kéo các thay đổi từ Hub thành của tôi kho lưu trữ cục bộ.

+0

Tôi đã thử nó và tôi đã nhận lỗi này: từ xa: từ xa: *** Kéo thay đổi vào Thủ từ xa: từ xa: gây tử vong: Không phải là một kho git (hoặc bất kỳ các thư mục chính): .git từ xa: gây tử vong: Không phải là kho lưu trữ git (hoặc bất kỳ thư mục chính nào): .git – Citizen

+0

Ok, tôi đã giải quyết vấn đề đó. Dường như thư mục trang web của bạn cũng phải là một kho lưu trữ git. Tôi đã làm điều đó nhưng bây giờ tôi nhận được lỗi: remote: fatal: 'origin' không xuất hiện là kho git remote: fatal: Kết thúc từ xa treo lên bất ngờ – Citizen

+0

Không được đặt GIT_DIR sẽ khiến nguyên nhân của tôi không bị có thể cập nhật? – Citizen

1

Bạn có thể bắt đầu bằng cách cập nhật để lặp lại một số kết quả gỡ lỗi. Cả đầu ra tiêu chuẩn và đầu ra lỗi chuẩn đều được chuyển tiếp tới git send-pack ở đầu bên kia, vì vậy bạn có thể đơn giản là echo các thông báo và bạn sẽ thấy các thông báo này trên máy khách mà bạn đã thực hiện git push. Tôi cho rằng bạn đã làm theo hướng dẫn cho từ đó, làm cho tập lệnh thực thi sau khi cập nhật, sao chép repo vào thư mục web, v.v.

14

Bạn có thể tìm thấy giải pháp thay thế tốt hơn tại http://toroid.org/ams/git-website-howto chỉ sử dụng một kho lưu trữ git và cho phép tất cả siêu dữ liệu và lịch sử trước đó vẫn ở bên ngoài DocumentRoot.

Hướng dẫn bạn đã sử dụng và liên kết giới thiệu tôi đã liên kết với bài viết khác đều dựa trên, nhưng liên kết tôi đã liên kết có vẻ là người ưa thích để hướng người dùng mới đến trong kênh IRC#git.

+0

Cảm ơn vì điều đó. Hữu ích! – Jacob