2012-06-26 29 views
6

Tôi muốn chia sẻ kho lưu trữ Git, chuyển đổi nó thành Mercurial và đóng góp các thay đổi của tôi trở lại kho lưu trữ Git gốc khi tôi hoàn tất. Tôi quan tâm hơn đến quy trình chuyển đổi an toàn và ổn định hơn là sự tiện lợi của nó. Tôi sẽ được pull thay đổi ing từ Git vào Mercurial một cách thường xuyên nhưng hiếm khi đóng góp bất kỳ thay đổi nào.Đóng góp các bản vá lỗi từ Mercurial cho Git?

Tôi không thoải mái khi sử dụng hg-git vì nhiều lỗi được báo cáo chống lại dự án đã không được trả lời trong nhiều năm. Tôi nghi ngờ việc sử dụng hg convert để chuyển đổi Git sang Hg an toàn hơn là sử dụng hg-git.

Câu hỏi của tôi là: giả sử tôi đã chuyển đổi kho lưu trữ sang Mercurial và thực hiện một số thay đổi, làm cách nào để đóng góp những thay đổi này trở lại kho lưu trữ chính thức? Tôi muốn đóng góp các thay đổi của mình trở lại kho lưu trữ Git chính thức mà không làm mất bất kỳ thông tin lịch sử nào (nghĩa là tôi không muốn gấp nhiều lần thay đổi thành một).

Cách dễ nhất và an toàn nhất để thực hiện việc này là gì?

+2

Có nhiều lý do để sử dụng hiện đại khi dự án được chính thức lưu trữ trên một cái gì đó như svn hoặc cvs, do đó có sẵn nhiều công cụ để dễ dàng. Nhưng nếu dự án đã được lưu trữ trong một scm hiện đại thì có rất ít lý do để không chỉ sử dụng cùng một cục bộ. – bames53

+0

@ bames53, tôi đồng ý nhưng cũng giống như nhiều quyết định khác chúng tôi thực hiện hàng ngày, điều này hoàn toàn chủ quan :) – Gili

+1

Chỉ cần chắc chắn, bạn biết rằng liên kết không phải là repo hg-git chính thức? Điều đó có thể được tìm thấy [ở đây] (https://github.com/schacon/hg-git). – obmarg

Trả lời

6

Bạn có thể thử và xuất khẩu Mercurial bạn cam kết như các bản vá lỗi:

hg export --git -r 1 >patch.diff 

này .diff tập tin nên được công nhận bởi Git và có thể được bổ sung vào repo git với git apply.
(Điều này đã được đề xuất trong "Convert a Mercurial Repository to Git", trong đó càng up-to-date script hg-fast-export cũng đã được đề cập)

Tùy chọn --git của hg export sẽ đảm bảo bạn tạo diffs trong git mở rộng định dạng khác. Xem hg help diffs để biết thêm thông tin.

+0

Điều này sẽ không làm sụp đổ nhiều thay đổi thành một? – Gili

+0

@Gili: nếu vậy, bạn chỉ cần liệt kê tất cả các bản sửa đổi Hg mà bạn quan tâm và, đối với mỗi bản, hãy tạo một tệp '.diff' (mà bạn sẽ áp dụng lần lượt cho repo Git của bạn). 'hg export' có thể thực hiện một sửa đổi hoặc một loạt các sửa đổi. – VonC

+0

Tôi chạy một bài kiểm tra nhanh: 'hg export --git -r 1 -r 2> patch.diff' nhúng cả hai bản sửa đổi vào cùng một tệp nhưng cung cấp thông tin đầy đủ cho những thay đổi nào đi vào changeset nào. Tôi tin rằng điều này sẽ làm việc. Cảm ơn! – Gili

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