Làm cách nào để chúng tôi có thể đẩy mã tới nhiều máy chủ? Chúng tôi có nhiều máy chủ cần phải có cùng một bản sao của mã. Rất khó để đẩy đến máy chủ cá nhân. Tôi biết thủy ngân có móc nhưng không ai trong số họ đưa ra một giải pháp thích hợp.Làm thế nào để đẩy mã vào nhiều máy chủ của Mercurial?
Trả lời
Trong máy chủ trung tâm của bạn, bạn tạo ra một cái móc changegroup.
Vì vậy, máy chủ trung tâm của bạn sẽ có HGRC sau:
[paths]
server2=http://server2
server3=http://server3
[hooks]
changegroup.server2 = hg push -f server2
changegroup.server3 = hg push -f server3
Bạn có thể có nhiều móc cho cùng một sự kiện, do đó không nên là một vấn đề.
Lợi thế của móc thay đổi trên móc thay đổi là nó chạy ít thường xuyên hơn.
Trong tệp .hg/hgrc
của bạn, bạn cần có chỉ thị [paths]
, có chứa vị trí mặc định của bạn. Gì về việc thêm một cái gì đó như:
[paths]
default = http://server1
server2 = http://server2
Và sau đó làm một:
hg push default
hg push server2
có vấn đề. Tôi biết giải pháp này, những gì tôi muốn là một cái móc hoặc một kích hoạt mà trên một push thành công đến server1, push to server2 được khởi động tự động. Các giải pháp trên luôn luôn có một cơ hội quên để đẩy đến một máy chủ. Nhân tiện, cảm ơn bạn đã trả lời nhanh. – Akshay
Tôi đã gặp vấn đề về chuỗi đẩy tự động. Liệu nó có giải quyết hay không? –
tôi giả định rằng một trong các máy chủ là repo chính, phần còn lại là triển khai. trong tình huống như vậy, tôi sẽ chỉ tương tác với chủ nhân và để các triển khai lên tới cron:
cat >$HOME/bin/dist <<'EOM'
#!/bin/sh
cd ${1:?}
tip=$(hg tip --template '{node}')
for r in $remotes; do
hg push -r $tip $r
done
EOM
chmod +x $HOME/bin/dist
(crontab -l; echo '*/5 * * * * $HOME/bin/dist /var/repos/master') | crontab -
huh .. điều gì sẽ xảy ra nếu nhiều hơn một cam kết đã được đẩy trong chưa đầy 5 triệu? :-). Trong trường hợp này, tốt hơn là thiết lập móc "changegroup". Ngoài ra khi một changeset đang tạo ra một nhánh, nó sẽ là cần thiết để đẩy với tùy chọn -f (force). Lời khuyên của tôi, nếu bạn muốn sử dụng cron thay vì móc, sẽ thiết lập nó trên các máy từ xa mà thường xuyên sẽ thay đổi: theo cách này, có thể có nhiều hơn một bộ thay đổi (vì vậy bạn thậm chí có thể kéo mỗi giờ cho ví dụ), và cũng kéo không yêu cầu tùy chọn -f. Chỉ cần 0,02 € của tôi. Chúc mừng, Christophe. Giải pháp của –
hoạt động tốt. 'đẩy' đẩy 'tip' và tất cả tổ tiên của nó, vì vậy họ sẽ nhận được tất cả mọi thứ. Mặc dù có rất nhiều mã không cần thiết, bạn có thể sử dụng tên 'tip' thay vì sử dụng mẫu để tìm hiểu nó (-r lấy tên tốt), và bạn có thể bỏ qua tham số -r tất cả cùng nhau và chỉ cần 'đẩy' mặc định là mẹo. Bạn có thể muốn push -f mặc dù kể từ khi bạn có thể cần phải đẩy các chi nhánh mới và người đứng đầu mới tại một số điểm và bạn không muốn kịch bản thất bại. –
@ ry4an: bạn không thể sử dụng tên 'tip', vì nó có thể trỏ đến một changeset khác trước khi tập lệnh nhận được từ server1 đến server3.đó chỉ là lý do tại sao bạn không thể bỏ qua '-r': nếu bạn muốn tất cả các gương có cùng một mẹo sau mỗi lần đẩy, bạn cần phải dính vào bản sửa đổi tương tự cho toàn bộ tập lệnh. bình luận '-f' là hợp lệ. –
- 1. Làm cách nào để đẩy chi nhánh Git cụ thể vào máy chủ của tôi?
- 2. Viết nhiều mã máy chủ
- 3. Làm cách nào để đồng bộ hóa hai hoặc nhiều máy chủ Mercurial?
- 4. Làm cách nào để chạy máy chủ Mercurial?
- 5. Chạy máy chủ Mercurial trên Google AppEngine
- 6. Máy chủ Sinatra đẩy?
- 7. Giữ mã trong nhiều máy chủ SVN
- 8. Thực hiện Máy chủ Đẩy
- 9. Làm cách nào để đẩy một dự án mới vào một kho lưu trữ Mercurial được chia sẻ?
- 10. Máy chủ Mercurial trên Apache/Windows
- 11. làm thế nào để sử dụng một máy chủ sonar trên nhiều máy
- 12. C# iPhone đẩy máy chủ?
- 13. Làm cách nào để nhúng các thẻ Mercurial vào mã C/C++ của tôi?
- 14. Làm thế nào để chạy mã ruby của tôi sau khi máy chủ Rails bắt đầu?
- 15. Làm thế nào để di chuyển từ một máy chủ Mercurial khác mà không bị mất lịch sử của tôi?
- 16. Đẩy phía máy chủ trong Rails
- 17. Làm thế nào để bạn đẩy mã bằng gitg?
- 18. Cam kết địa phương đẩy đến máy chủ trung tâm
- 19. Cài đặt Phía máy chủ của thông báo đẩy
- 20. Máy chủ Mercurial có phải là để sử dụng Mercurial không?
- 21. Làm thế nào để quay trở lại cam kết và đẩy sửa đổi trong mercurial?
- 22. Tại sao Mercurial cần nói chuyện với máy chủ, để liệt kê các cam kết gửi đi (không được đẩy)?
- 23. Đẩy tới kho Mercurial từ xa
- 24. Làm thế nào máy chủ có thể đẩy dữ liệu cho khách hàng?
- 25. Làm thế nào để sử dụng MediaCodec để giải mã dữ liệu từ máy chủ RTSP?
- 26. Hoàn tác việc đẩy Mercurial
- 27. PHP - AJAX Máy chủ jQuery "Đẩy" Hệ thống
- 28. Thêm thông báo đẩy iPhone bằng máy chủ ASP.NET
- 29. Thiết lập một máy chủ Mercurial trên IIS 6
- 30. Đẩy Thông báo bằng máy chủ Rails
Đây là giải pháp tốt nhất vì nó sẽ chỉ được kích hoạt nếu push to server 1 thành công. Bạn có thể sẽ cần 'push -f' trong những dòng móc thay đổi nếu bạn đang làm việc với lịch sử nhánh. –
Đã thêm tùy chọn -f –
Mã cần chỉnh sửa để nó hoạt động. Mercurial cho phép bạn [thực hiện nhiều hành động cho mỗi sự kiện] (http://hgbook.red-bean.com/read/handling-repository-events-with-hooks.html) ** bằng cách thêm phần mở rộng vào cuối ** của một tên móc. Bạn mở rộng tên móc bằng cách đặt tên móc, theo sau là dấu chấm (ký tự “.”), Tiếp theo là một số văn bản bạn chọn. Ví dụ, Mercurial sẽ chạy cả commit.foo và commit.bar khi sự kiện commit xảy ra. –