2009-12-14 42 views
23

Do thiếu sự hỗ trợ Mercurial trong một số công cụ, và áp lực quản lý nó đã trở nên cần thiết để chuyển đổi một số kho thử Mercurial thành Subversion để phù hợp với tiêu chuẩn của công ty.Chuyển đổi từ Mercurial sang Subversion

Có bất kỳ công cụ hoặc đề xuất nào về cách đạt được điều này mà không làm mất lịch sử sửa đổi và tương tự không?

+0

Đối với người thắc mắc tiếp theo tìm thấy Mercurial lạ và đang tìm kiếm cho Subversion, bạn có thể thấy liên kết này hữu ích: [Subversion Re-education] (http://hginit.com/00.html) – noelicus

+0

Để tiếp theo wanderer người tìm thấy Mercurial repugnant, xin vui lòng không "giáo dục lại" chính mình bằng cách sử dụng liên kết ở trên, trừ khi bạn tin rằng một nhà cung cấp bán các công cụ dựa trên Mercurial có một ý kiến ​​không thiên vị. Có thể thử tôn trọng sở thích và ý kiến ​​về các công cụ VCS và DVCS. Nhiều người đã thử cả hai - hoặc bị buộc phải - và có ý kiến ​​hoàn toàn hợp lệ về những gì họ thích và tại sao. – JoGusto

Trả lời

28

Tiện ích mở rộng chuyển đổi đi kèm với mercurial có thể sử dụng mercurial như src và subversion làm dest.

hg convert --dest-type svn hgreponame svnreponame 

Đảm bảo bật nó trong tệp .hgrc của bạn.

Nếu bạn muốn tiếp tục sử dụng mercurial trên sly, sau đó hgsubversion sẽ cho phép bạn thực hiện đồng bộ hai chiều.

+1

điều này không thành công sau 2 lần sửa đổi với 'hủy bỏ : svn thoát với trạng thái 256' –

+1

Tôi đã không sử dụng thứ svn dest, nhưng tôi đã thấy nó thay đổi rất nhiều gần đây trên danh sách gửi thư. Hãy chắc chắn rằng bạn đang sử dụng mới nhất của mercurial (1.4.1) và các ràng buộc swig mới nhất cho svn mới nhất. Sau đó, bắt đầu sử dụng một số kết hợp của --debug --traceback và thậm chí có thể strace. Có thể cần bắt đầu với lịch sử thủy ngân hoàn toàn tuyến tính, dễ dàng đạt được với 'hg clone http: // src -r tip'. Tôi nghĩ rằng tôi đã nghe nói rằng định dạng repo của svn không phải là để lưu trữ sửa đổi hợp nhất mercurial sạch. –

+4

Chỉ cần lưu ý thêm về điều này, phá thai đã xảy ra do thiếu sót hệ thống tập tin của một số loại (ntfs3g). Chỉ cần tiếp tục cố gắng. –

3

Tailor sẽ có thể thực hiện những gì bạn muốn.

+0

Lỗi liên kết: http://progetti.arstecnica.it/ không tìm thấy máy chủ. – ChrisFreeman

+0

@ChrisFreeman: Thật không may có vẻ như arstecnica.it bị hỏng. Debian vẫn có các tệp trong cơ sở dữ liệu gói của họ: http://http.debian.net/debian/pool/main/t/tailor/tailor_0.9.35+darcs20090615.orig.tar.gz –

8

Câu trả lời của Ry4an ở trên thực hiện thủ thuật chính xác; một số hướng dẫn chi tiết cho bất cứ ai (như tôi) của những người gặp khó khăn:

  1. Làm cho mình một đặc ân và không thử này trên Windows. Bạn sẽ phải cài đặt một phiên bản SVN rất cụ thể và thậm chí một số thứ nhất định sẽ không thành công với các thông báo lỗi khác nhau. Giải pháp của tôi là để khởi động một ví dụ AWS sạch, yum-nhận được các phiên bản mới nhất của mercurial và svn vào nó, clone HG repo, và chạy chuyển đổi ở đó.

  2. Thêm phần này vào tập tin .hgrc của bạn để cho phép mở rộng convert:

    [extensions] 
    hgext.convert= 
    
  3. Chạy lệnh này:

    hg convert --dest-type svn <hg_directory> <directory_for_svn_output> 
    
  4. Bạn có thể nhận được lỗi sau:

    abort: svn exited with status 256 
    

    Đừng bỏ cuộc! Chỉ cần chạy lệnh tương tự một lần nữa và nó sẽ tiếp tục nơi nó rời đi.

    Nếu bạn tiếp tục gặp sự cố, hãy thêm --debug --traceback vào dòng lệnh để biết thêm chi tiết về những gì đã xảy ra.

+0

Erm, Windows phải làm gì với bất kỳ thứ gì trong số đó? –

+0

@BillyONeal Quá dài, vì vậy tôi không nhớ chính xác, nhưng trong Windows chuyển đổi của tôi không thành công do một số vấn đề cú pháp (tôi nghĩ rằng đó là do một số vấn đề với định dạng tham số dòng lệnh để svn.exe). Tìm kiếm các lỗi đó trên Google, bạn sẽ thấy bạn cần một phiên bản SVN rất cụ thể để nó hoạt động. Sau một thời gian làm việc với nó, tôi đã chọn để làm điều đó trên AWS và nó đã làm việc lần đầu tiên. – nitwit

+0

Tôi không thể quản lý điều này trên cả hai cửa sổ và linux. Trên linux các thông báo lỗi là mike @ mike-virtual-machine ~/repos $ hg chuyển đổi - kiểu gõ svn ~/Horizon ~/HorizonToSvn khởi tạo bản sao làm việc svn 'HorizonToSvn-wc' quét nguồn ... phân loại ... chuyển đổi ... 6655 đường cơ sở 30357 hủy bỏ: svn đã thoát với trạng thái 32512 mike @ mike-virtual-machine ~/repos $ – mikelong

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