2009-07-18 22 views
10

Tôi muốn đồ chơi xung quanh với Mercurial một chút, vì vậy tôi đang cố gắng chuyển đổi một trong các kho lưu trữ hiện có của tôi. Tôi chạy lệnh sau trên máy Mac của tôi:Làm cách nào để chuyển đổi kho lưu trữ Git sang Mercurial và mang theo các thẻ của nó

hg convert myrepos myrepos-hg 

Lệnh nhập thành công tất cả các cam kết của tôi, nhưng nó không mang theo 8 thẻ hoặc được đánh dấu trong kho Git (cũng không phải là bất kỳ chi nhánh cho vấn đề đó). Có một thông số đặc biệt tôi cần phải đặt để các thẻ của tôi được nhập vào Mercurial không?

+1

Chuyển đổi git thành mercurial? Ở đây, hãy đọc câu chuyện cảnh báo này trước tiên: http://www.gksoft.com/a/fun/hal-ibm.html –

Trả lời

6

Thẻ của bạn có thẻ git nhẹ hoặc đầy đủ trên thẻ được chú thích không? hg convert chỉ chuyển đổi các thẻ được chú thích, nhưng git theo mặc định sẽ tạo các thẻ có trọng lượng nhẹ. Tôi đã gặp vấn đề này khi chuyển đổi một trong các kho lưu trữ của tôi gần đây. Bạn có thể kiểm tra những gì họ đang như sau:

git ls-remote --tags . 

Chạy hg convert sẽ chỉ chuyển đổi các thẻ kết thúc bằng ^{}, những chú thích. Bạn có 2 lựa chọn:

  • vá các git.py hgext chuyển đổi tập tin mở rộng để chuyển đổi tất cả các loại
  • thay đổi thẻ git của bạn để thẻ chú thích trước khi chuyển đổi

Với một kịch bản shell nhỏ và --force tùy chọn để git-tag bạn có thể chú thích tất cả các thẻ của bạn.

+0

Đó là vấn đề. Cảm ơn vì tiền hỗ trợ! –

3

Đây là vấn đề được biết một chút. Bạn có thể thử vá /usr/lib/python2.6/site-packages/hgext/convert/hg.py tập tin sau đây (hoặc bất cứ nơi nào nó nằm) bằng cách thay đổi này:

extra = {'branch': self.tagsbranch} 

tới:

extra = {'branch': 'default'} 

và sau đó chuyển đổi lại.

EDIT: Trên một cái nhìn sâu sắc hơn về trạng thái của những thứ có vẻ như nó có thể khó khăn - nó không phải không thể - để làm những gì bạn muốn. Thậm chí nhiều hơn để làm điều đó một cách chính xác.

Vì bạn chỉ có 8 thẻ, hãy xem xét tiết kiệm cho mình những rắc rối bằng cách tạo tệp .hgtags bằng tay. Bạn có thể tìm ra những gì với 'hg chuyển đổi' sau này (tôi sẽ giữ cho đôi mắt của tôi cũng được chữa lành).

May mắn.

+0

Tôi đã sửa đổi tệp tương ứng (nó nằm trong /Library/Python/2.5/site-packages/...), nhưng tiếc là nó vẫn không chuyển đổi các thẻ và tạo tệp .hgtags. –

1

Một gợi ý tôi đã thấy trong quá khứ là sử dụng svn làm bước trung gian. Cả git và hg đều có chuyển đổi svn hai chiều tuyệt vời.

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