2008-08-18 17 views
6

Tôi đang chuyển đổi từ kho CVS hiện tại sang kho SVN. CVS kho lưu trữ có vài brances và tôi muốn đổi tên nhánh trong khi chuyển đổi.CVS đến SVN chuyển đổi và tổ chức lại các chi nhánh

chuyển đổi Wanted là như thế này:

CVS branch   SVN branch 
HEAD  ->  branches/branchX 
branchA ->  trunk 
branchB ->  branches/branchB 
branchC ->  branches/branchC 

Đó là, CVS ĐẦU trở thành một chi nhánh bình thường và CVS branchA trở nên SVN thân cây.

Cả hai kho CVS và SVN sẽ nằm trên cùng một máy linux.

Làm cách nào để thực hiện điều này?

Cũng chuyển đổi trong đó CVS branchA trở thành SVN trunk và tất cả các nhánh CVS khác bị bỏ qua có thể là đủ.

Trả lời

8
Tôi đặc biệt quan tâm đến việc bảo tồn lịch sử cam kết. Nếu tôi đổi tên và di chuyển các nhánh xung quanh trong SVN sau khi chuyển đổi, liệu lịch sử có được giữ nguyên không?

Có. Subversion cũng theo dõi các thay đổi đối với cấu trúc thư mục và tất cả lịch sử phiên bản được giữ nguyên ngay cả khi tệp được di chuyển trong cây.

Tôi khuyên bạn nên chuyển đổi kho lưu trữ với cvs2svn, bao gồm các chi nhánh và thẻ. Khi kho lưu trữ ở Subversion, bạn có thể di chuyển các nhánh và các thẻ xung quanh theo ý muốn. Điều này cũng giữ lịch sử của các thẻ và nhánh thực sự được đổi tên, điều này có thể thú vị trong bối cảnh lịch sử sau này.

+0

Tôi đang sử dụng cvs2svn, nhưng tôi chỉ muốn chuyển đổi nhánh cụ thể và HEAD, nhưng cvs2svn chỉ có chức năng "loại trừ" cho các nhánh chứ không phải "bao gồm". Vậy làm cách nào để chuyển đổi HEAD bằng một chi nhánh khác? – Oded

+0

Tôi đoán bạn có thể đổ tất cả và sử dụng sau đó svndumpfilter để lọc ra bất cứ điều gì bạn không muốn? –

+0

Tôi không nghĩ rằng svndumpfilter loại bỏ các nhánh không được đề cập. Bạn có biết giải pháp nào khác không? – Oded

1

Chi nhánh lật đổ là các thư mục, vì vậy bạn chỉ có thể di chuyển các nhánh sau khi nhập xong và không có lịch sử nào bị mất.

5

Đã lâu rồi kể từ khi tôi thực hiện chuyển đổi CVS -> SVN và thậm chí có thể còn lâu hơn kể từ khi tôi thực hiện một cấu trúc chi nhánh không độc hại. Vì SVN có thể di chuyển quanh các cây thư mục khá dễ dàng, bạn có thể thực hiện toàn bộ chuyển đổi trước, sau đó sắp xếp cấu trúc thân cây/nhánh hoàn toàn trong SVN sau này.

Nếu bạn đi đến điểm đó và di chuyển xung quanh toàn bộ cây thư mục trong SVN, có thể tốt nhất nếu bạn cam kết sau mỗi lần đổi tên/di chuyển cây. Chỉ là một thứ để ghi nhớ trong đầu.

0

Tôi đặc biệt quan tâm đến việc bảo tồn lịch sử cam kết. Nếu tôi đổi tên và di chuyển các nhánh xung quanh trong SVN sau khi chuyển đổi, liệu lịch sử có được giữ nguyên không?

1

Một số thông tin bổ sung để hỗ trợ các câu trả lời được chấp nhận:

cvs2svn không cho phép chuyển đổi từ thân cây đến một chi nhánh hoặc các chi nhánh để thân cây

để di chuyển mọi thứ khi bạn đang chuyển đổi sang svn là tốt nhất con đường để đi.

1

Có thể di chuyển thư mục con và nhánh sau khi chuyển đổi, nhưng điều này đòi hỏi một cam kết SVN sau chuyển đổi rõ ràng sẽ vẫn còn trong lịch sử SVN của bạn, làm cho việc khám phá lịch sử phức tạp hơn một chút.Nhưng bạn thực sự có thể yêu cầu cvs2svn lưu trữ thân cây và nhánh vào đường dẫn SVN mà bạn muốn bằng cách sử dụng tùy chọn dòng lệnh --symbol-hints=symbol-hints.txt hoặc (nếu bạn đang sử dụng tệp tùy chọn cho chuyển đổi của mình) quy tắc chiến lược biểu tượng SymbolHintsFileRule('symbol-hints.txt'), nơi symbol-hints.txt là một tập tin có chứa đường như sau:

. .trunk. trunk branches/branchX . 
. branchX branch trunk . 

Xin lưu ý rằng một số cam kết tin nhắn được autogenerated bởi cvs2svn (ví dụ, đối với việc tạo ra các chi nhánh) sẽ đề cập đến tên chi nhánh gốc.

1

Mặc dù di chuyển xung quanh các nhánh sau khi thực hiện chuyển đổi, có thể tốt hơn để thiết lập tệp cấu hình cvs2svn để chỉ định chính xác tên bạn muốn cho mỗi nhánh hiện tại của bạn. Một trong những lợi ích của việc này là FishEye sẽ hiểu đầu ra tốt hơn rất nhiều.

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