Tích hợp các nhánh khác nhau từ các nguồn bên ngoài vào một kho lưu trữ Mercurial duy nhất


8

Chỉnh sửa : Làm cho điều này thậm chí còn rõ ràng hơn khi tiền thưởng sắp hết hạn: có cách nào để nhập lịch sử (kéo từ SCM khác nhau) trực tiếp vào một chi nhánh cụ thể với Mercurial không?


Tôi hiện đang làm việc trong một công ty sử dụng Perforce và đang mở đường cho việc kiểm soát phiên bản phân tán với Mercurial. Tôi đã thành công trong việc nhập lịch sử Perforce bằng cách sử dụng perfarce (một cái tên khá phù hợp, tôi cười mỗi khi tôi nhìn thấy / nói nó) tuy nhiên, điều này chỉ hoạt động với một nhánh duy nhất tại một thời điểm.

Đây là cách thiết lập tích hợp P4 của tôi hoạt động:

  • Trong lực lượng, tạo một "khách hàng", đó là một mô tả về những gì bạn sẽ liên tục cập nhật / kiểm tra. Điều này chỉ có thể giải quyết một chi nhánh tại một thời điểm (thân cây hoặc khác).
  • Một khi bạn làm điều này, chạy hg clone p4://<server>/<client_name>
  • Đi tới .hg / hgrc và đặt đường dẫn perforce: perforce = p4://<server>/<client_name>
  • Làm việc bình thường với mã theo đồng bóng, làm hg pull perforceđể đồng bộ hóa, hg pushđể xuất một thay đổi

Những gì tôi muốn có thể làm là có một đường dẫn lực lượng trên mỗi nhánh và có mọi thứ hoạt động trong cùng một kho lưu trữ. Bây giờ, đẩy không phải là một vấn đề, tuy nhiên, nếu tôi kéo lịch sử từ một nhánh khác, nó sẽ kết thúc ở nhánh mặc định.

Tôi muốn có thể làm một cái gì đó giống như hg pull perforce-R5và đưa nó vào chi nhánh R5 của Mercurial. Ngay cả khi tôi không có lịch sử hợp nhất, nó vẫn đủ ngọt ngào để có thể bảo tồn lịch sử của chi nhánh.

Ngoài ra còn có các plugin khác cho CVCS cho phép bạn tích hợp tính đồng nhất, nhưng AFAIK, phần lật đổ có cùng một vấn đề.

Tôi không nghĩ có một cách dễ dàng để làm điều này, nhưng miễn là tôi có thể tự động hóa quy trình với một số hook và script trong một máy Mercurial, điều đó là đủ tốt.


Chỉnh sửa : Để làm cho mọi thứ rõ ràng hơn một chút:

  • Thân cây Perforce được ánh xạ tới nhánh mặc định của Mercurial
  • Chi nhánh Perforce R1 phải được ánh xạ tới nhánh phát hành-1 của Mercurial (tương tự cho R2, R3, v.v.)
  • Khi tôi bảo Mercurial rút khỏi lực lượng (nghĩa là hg pull perforce"lực lượng" là tên của đường dẫn đến máy khách Perforce), nó sẽ kéo thân cây Perforce vào mặc định của Mercurial.
  • Khi tôi bảo Mercurial kéo từ perforce-R1 (nghĩa là hg pull perforce-R1"perforce-R1" là đường dẫn đến máy khách R1), nó sẽ kéo nhánh Perforce R1 đến nhánh "phát hành-1" của Mercurial. ĐÂY LÀ PHẦN TÔI ĐANG HỎI VỀ .

Tôi khá chắc chắn rằng tôi có thể giúp với điều này (là một người ám ảnh đồng bóng và đã di chuyển từ p4 sang hg trong quá khứ) nhưng thật tuyệt nếu bạn có thể thêm một sơ đồ hiển thị quy trình công việc bạn dự định sử dụng, chỉ cần để làm cho mọi thứ rõ ràng hơn một chút.
Ed James

Câu trả lời:


0

Tôi không tin rằng điều này có thể được thực hiện trực tiếp.

Một tùy chọn sẽ là sử dụng rebasecông cụ để di chuyển các phần thích hợp của kho lưu trữ sang nhánh khác sau khi kéo bằng cách sử dụng một số bước như sau:

  • Tạo chi nhánh mong muốn, vd hg branch release-1
  • Cam kết chi nhánh mới: hg commit -m "Created branch"
  • Kéo kho lưu trữ từ xa đến nhánh thủy ngân mặc định: hg pull perforce-R1
  • Rebase kéo mới đến nhánh mong muốn: hg rebase -s <first changeset of perforce-R1> -d release-1

Tôi nghĩ rằng câu trả lời của anh ấy đủ, tuy nhiên, tôi đang tìm cách để làm điều đó theo cách tự động hơn.
dukeofgaming
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.