Làm thế nào để kết hợp hai dự án trong Mercurial?


84

Tôi có hai kho lưu trữ thương mại riêng biệt. Tại thời điểm này, thật hợp lý khi họ "trở thành một" bởi vì tôi muốn làm việc trên hai dự án cùng một lúc.

Tôi thực sự muốn hai dự án là một thư mục con trong kho lưu trữ mới.

  1. Làm cách nào để hợp nhất hai dự án?
  2. Đây có phải là một ý tưởng hay, hay tôi nên giữ chúng riêng biệt?

Có vẻ như tôi phải có thể đẩy từ kho này sang kho khác ... Có lẽ điều này thực sự là thẳng tiến?

Câu trả lời:


69

Tôi đã có thể kết hợp hai kho lưu trữ của mình theo cách này:

  1. Sử dụng hg clone first_repositoryđể sao chép một trong các kho lưu trữ.
  2. Sử dụng hg pull -f other_repositoryđể lấy mã từ kho lưu trữ khác.

Các -f(lực lượng) cờ trên pull là chìa khóa - nó nói để bỏ qua một thực tế là hai kho không phải là từ cùng một nguồn.

Đây là tài liệu cho tính năng này.


1
Điều này có bảo toàn các khóa băm của commit từ repo thứ hai không? (Tôi đoán là không, nhưng nó có thể ổn cho đến khi bạn thực hiện hợp nhất.)
Macke 11/10/09

6
Tác phẩm này, nhưng bạn cũng sẽ cần phải chạy hg mergeđể cuối cùng có được tất cả mọi thứ làm việc
Yếu tố Mystic

7
@Marcus Lindblom: kéo một tập thay đổi sẽ không bao giờ thay đổi băm của nó. Nếu bạn nhìn vào hg glogsau khi thực hiện việc này, bạn sẽ thấy bạn có hai dòng thay đổi không liên quan. Tập thay đổi đầu tiên trong mỗi dòng không có cha, nhưng đó không phải là vấn đề đối với Mercurial. Sau khi kéo, bạn sẽ muốn tạo một tập hợp thay đổi mới cho mỗi dòng nơi bạn đưa hg mvmọi thứ vào thư mục con thích hợp, sau đó bạn hợp nhất các dòng và bạn đã hoàn tất.
Steve Losh

1
điều gì sẽ xảy ra nếu hai kho lưu trữ có mã chung cho cả hai kho. Điều đó có được hợp nhất tự động xử lý không? và đối với hợp nhất, chúng ta có thể nói $ hg hợp nhất?
kamal

2
cho mục đích tham khảo, đây là tài liệu cho quá trình này mercurial.selenic.com/wiki/MergingUnrelatedRepositories
Gent

7

hg bắt đầu có trát đòi hầu tòa kể từ ngày 1.3 (2009-07-01). Các phiên bản đầu tiên không hoàn chỉnh và không ổn định nhưng bây giờ nó khá có thể sử dụng được.


2
Tôi nhận thấy rằng các báo cáo phụ là một vấn đề khó khăn khi làm việc. Chúng hoạt động nhưng bạn phải nhảy qua một số vòng để chúng xử lý và có thể là nguồn gốc của rất nhiều cơn đau đầu nếu bạn không cẩn thận.
Pete Duncanson

4
Có thể là đáng chú ý là subrepositories là chính thức một tính năng của phương sách cuối cùng: mercurial.selenic.com/wiki/Subrepository (tính 2013/11/12)
jtpereyda

3

Nếu bạn không sử dụng cùng một mã trong các dự án, hãy giữ chúng riêng biệt. Bạn có thể đặt bạn kho cá nhân của mỗi người trong số các dự án được chỉ là một thư mục ngoài. Tại sao phải trộn tất cả các nhánh, hợp nhất và nhận xét cam kết khi bạn không cần phải làm vậy.

Giới thiệu về bản chỉnh sửa của bạn: Đẩy từ kho này sang kho khác. Bạn luôn có thể sử dụng transplantlệnh. Mặc dù, tất cả những điều này thực sự chỉ là phụ giúp bạn mong muốn kết hợp cả hai, vì vậy bạn có thể cảm thấy không thoải mái khi sử dụng các gợi ý của tôi. Sau đó, bạn có thể sử dụng phần mở rộng rừng, hoặc một cái gì đó.

hg transplant -s REPOSITORY lower_rev:high_rev
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.