2009-07-02 39 views
21

Tôi có một dự án rất cũ bao gồm nguồn từ một dự án khác trực tiếp, thay vì liên kết nó như một thư viện. Quay trở lại những ngày tồi tệ, khi tôi đang giữ mọi thứ trong CVS, tôi đã có mã bên ngoài trên một nhánh của nhà cung cấp và đã nhập khẩu định kỳ. Bây giờ dự án của tôi là trong git nó sẽ có ý nghĩa hơn để bao gồm các dự án bên ngoài như là một submodule. Nhưng, có một vấn đề: dự án bên ngoài đã chuyển sang Mercurial. Tôi đã tìm thấy các dự án git-hg và hg-git, nhưng tôi không chắc chắn nếu một trong hai xử lý submodules đúng cách.git submodule từ Hg repo?

Có cách nào để tạo một mô-đun con git trỏ đến một repo Hg thay vì một repo git?

Trả lời

12

Kể từ khi hg-git không đề cập đến rằng submodules chưa được hỗ trợ, mà lá chỉ là một lựa chọn của nhãn hiệu:

  • thiết lập một kho Git đâu đó rằng bạn có quyền truy cập push to,
  • thêm nó như là một Git từ xa và sau đó
  • chạy hg gpush từ bên trong dự án của bạn.

Ví dụ:

$ cd hg-git # (an Hg repository) 
$ hg gremote add origin [email protected]/schacon/hg-git.git 
$ hg gpush 

Đó Git repo sẽ đại diện cho submodule của bạn, nhưng nếu bạn sửa đổi và đẩy submodule rằng, bạn vẫn sẽ phải kéo từ đó Git repo đến Hg repo thực tế.

Các lệnh git-hg tuyệt vời khác được liệt kê trong "rosetta stone" này.

+1

Có lỗi đánh máy trong ví dụ. "$ hg push" phải là "$ hg gpush" như được đề cập trong phần mô tả ở trên. Ngoại trừ điều đó, câu trả lời của @ VonC rất hữu ích cho tôi. Cảm ơn! :-) –

+1

Ví dụ này khó hiểu với cách đặt tên của nó. Thư mục kho lưu trữ chính là gì và thư mục submodule/subrepo là gì? – einpoklum

+0

@einpoklum từ những gì tôi có thể đọc từ câu hỏi 7 năm tuổi này, submodule là repo bên ngoài đã di cư đến mercurial. Mục đích là để đẩy từ bản sao thủy ngân địa phương của bạn đến repo Git từ xa, mà sau đó có thể được tham chiếu như submodule bởi bất kỳ repo cha mẹ Git nào. – VonC

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