Tôi đang cố gắng sử dụng svn2git để di chuyển dự án SVN sang git. Tuy nhiên tôi có vấn đề bảo tồn tất cả lịch sử. Lý do có vẻ là vì thân cây đã được di chuyển trong quá khứ. Lệnh tôi đang sử dụng là:Làm thế nào để giữ lịch sử SVN trong Git khi thân cây đã di chuyển?
$ svn2git http://mysvnserver.com/myproject/iPhone/ --no-minimize-url --authors ../authors.txt
Nhưng điều này chỉ mang lại cho tôi lịch sử sẽ trở lại năm 2011. Các dự án thực sự bắt đầu vào năm 2010. Dự kiến bắt đầu bằng cách nhìn như thế này:
myproject
trunk
branches
tags
Nhưng trong năm 2011 nó đã được thay đổi thành:
myproject
iPhone
trunk
branches
tags
Android
trunk
branches
tags
Thân cây và chi nhánh cũ đã nằm trong thư mục iPhone. Lịch sử tôi bắt đầu từ khi động thái này được thực hiện. Nếu tôi làm svn log
trong thư mục iPhone, tôi sẽ nhận được lịch sử rút gọn. Nhưng nếu tôi cd trunk; svn log
thì tôi sẽ có được toàn bộ lịch sử.
Tôi không biết làm thế nào để có được lịch sử này. Ý tưởng của tôi là bằng cách nào đó tạo ra một kho lưu trữ git chỉ với lịch sử của thân cây đi tất cả các con đường trở lại năm 2010. Sau đó, tôi sau đó sẽ kéo này như là một chi nhánh trong repo chính của tôi, và làm một rebase để có được lịch sử chính xác. Nhưng tôi đã không có may mắn tạo repo này chỉ cho thân cây. Tôi đã thử:
$ svn2git http://mysvnserver.com/myproject/ --rootistrunk --authors ../authors.txt
và
$ svn2git http://mysvnserver.com/myproject/ --rootistrunk -no-minimize-url --authors ../authors.txt
mà không cần bất kỳ sự thành công.
Tôi không thể nhớ vấn đề này nữa, nhưng tôi đã đặt câu trả lời này là vì câu trả lời dường như gần nhất với cách tôi thực sự đã giải quyết được vấn đề. Tôi tin rằng tôi đã thực hiện một loạt các nhánh riêng biệt và sau đó khâu chúng lại với nhau bằng cách nhìn vào lịch sử như bạn mô tả. –