2009-06-05 30 views
6

Nhóm của chúng tôi đã sử dụng SVN để quản lý một ứng dụng có kích thước khá và theo thời gian một phân cấp khá phức tạp của các nhánh và thẻ đã được xây dựng theo tiêu chuẩn cơ bản cho kho SVN, nhưng là lồng nhau hơn:Di chuyển phân cấp chi nhánh SVN phức tạp sang Mercurial

 
    |-trunk 
    |-branches 
    | |-releases 
    | | |-releaseA 
    | | `-releaseB 
    | `-features 
    |  |-featureX 
    |  `-featureY 
    |-tags 
    |-releaseA 
    | |-beta 
    | `-RTP 
    `-releaseB 
     |-beta 
     `-RTP  

(các ngành chức năng là chi nhánh rõ ràng là tạm thời nhưng chúng ta phải đưa họ vào xem xét vì nó sẽ không khả thi để đóng tất cả chúng cùng một lúc trong tương lai gần)

Vì nhiều lý do nhưng chủ yếu là vì sự hợp nhất đã trở thành một nỗi đau ngày càng tăng, chúng tôi đang xem xét ng để chuyển sang Mercurial.

Vấn đề chính mà chúng tôi hiện đang phải đối mặt là di chuyển cơ sở mã hiện tại mà không làm mất lịch sử của chúng tôi. Tôi đã thử một số công cụ di chuyển (ví dụ: yasvn2hg, hg convertsvn2hg) với yasvn2hg là hứa hẹn nhất, nhưng không ai trong số họ dường như có thể xử lý phân cấp lồng nhau nhưng tất cả đều cho rằng các chi nhánh và thẻ được tổ chức trong một thư mục phẳng tương ứng.

Sự lựa chọn giữa chi nhánh tên là hoặc nhái như là mục tiêu chuyển đổi chi nhánh SVN cũ không phải là một yếu tố hạn chế trong trường hợp này, là một trong hai giải pháp sẽ được đánh giá cao. Chúng tôi hiện đang thử nghiệm với cả hai tùy chọn và cách chúng phù hợp với các quy trình hiện tại của chúng tôi nhưng chưa quyết định. Tôi rõ ràng sẽ quan tâm đến các khuyến nghị hoặc kinh nghiệm với các thiết lập tương tự liên quan đến vấn đề đó.

Vì vậy, cách tốt nhất để chuyển đổi phân cấp nhánh SVN lồng nhau như thế này thành Mercurial là gì?

Chuyển đổi một chi nhánh tại một thời điểm thành một kho lưu trữ riêng biệt sẽ khá khó chịu và tôi không chắc liệu đó có phải là cách tiếp cận phù hợp hay không, tùy thuộc vào cách các công cụ xử lý sự hợp nhất lịch sử và cần lưu ý tất cả các chi nhánh khác?

+0

hey tôi gần đây đã đăng chính xác cùng một câu hỏi ngay bây giờ. Rất thích nghe nếu bạn giải quyết trên một giải pháp kể từ khi đặt câu hỏi. Như đã đề cập dưới đây trong một bình luận, trong trường hợp của tôi có một "bản sao" cho mỗi nhánh lồng nhau thực sự không phải là một giải pháp và tôi chắc chắn hy vọng sẽ tìm được cách để có thể nhập các nhánh _as branches_ vào HG mà không nhân đôi dãy dữ liệu bằng cách chia nhỏ nhiều repos. –

Trả lời

2

Bài viết hay mà tôi đọc là. http://ww2.samhart.com/node/50

+0

Liên kết này đề cập đến lý do của tôi để tách repo svn thành nhiều repo hg –

2

Bạn thực sự nên đặt câu hỏi như vậy trên mercurial mailing list. Đó là nơi các nhà phát triển Mercurial đi chơi, và đã có nhiều câu hỏi di chuyển Subversion theo thời gian.

Điều đó đang được nói, một recent change có thể giúp bạn - nó tuyên bố để cho bạn

[...] sửa chữa ngay cả những kho tồi tệ nhất quản lý yếu kém và biến chúng thành kho Mercurial có cấu trúc độc đáo.

Tôi chưa tự mình thử, vì vậy tôi không thể nhận xét về mức độ hiệu quả của trường hợp chính xác của bạn.

+0

Cảm ơn, tôi sẽ xem liệu tôi có thể tìm thấy bản sửa lỗi bạn đã đề cập và thử không. Liên quan đến danh sách gửi thư, đó là một lựa chọn mà tôi chắc chắn sẽ khám phá.Hầu hết các lần truy cập Google mà tôi tìm thấy liên quan đến việc di chuyển Mercurial hoặc chỉ vào một mục nhập blog hoặc SO, do đó, nó dường như là nơi đầu tiên thuận tiện để yêu cầu –

+0

Phải. Tôi đã đề xuất nó vì tôi nghĩ thật xấu hổ khi truyền bá các câu trả lời trên cả wiki, danh sách gửi thư, và bây giờ là stackoverflow. Ngoài ra, danh sách gửi thư có một số người đã làm việc trên phần cụ thể này của mã. Nếu bạn thích IRC, sau đó tôi đã thấy một số người nhận trợ giúp trong kênh #mercurial trên irc.freenode.net. –

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