2012-06-22 25 views
22

Tôi đang cố gắng chuyển đổi repo svn thành git, nhưng tôi không có nhiều thành công. Kho lưu trữ được đề cập không có bất kỳ thứ gì giống như "thân cây". Cách bố trí như sau:Không thể chuyển đổi kho svn (không có thân cây) thành git

 
/home/svn/ 
     |--- /project1/ 
     |--- /project2/ 
     |--- /repos/project3/ 

Và bên dưới các thư mục dự án là các tập tin. Không có thân cây, không có chi nhánh, không có gì đặc biệt. Vào thời điểm đó là tất cả những gì tôi cần, và bây giờ nó cắn tôi vào mông.

Tôi đang theo hướng dẫn này: http://john.albin.net/git/convert-subversion-to-git

Khi tôi chạy lệnh này:

git svn clone svn+ssh://[email protected]/home/svn/repos/kiflea --no-metadata -A authors-transform.txt --stdlayout ~/kiflea 

Nó nói nó đã tạo ra một kho git rỗng ... Nhưng tôi không thực sự muốn nó trống rỗng.

Tôi cũng không biết các lệnh sau sẽ trông như thế nào, vì kho lưu trữ của tôi có bố cục khác.

lệnh như git symbolic-ref HEAD refs/heads/trunk hoặc git config remote.bare.push 'refs/remotes/*:refs/heads/*'

+3

Xóa --stdlayout Bạn có muốn chia nó thành 3 kho Git không? –

+0

Điều đó đã làm được. Tôi đã thử rất nhiều biến thể, rất nhiều lệnh, nhưng việc loại bỏ --stdlayout khỏi cái này không vượt qua tâm trí của tôi. Trả lời câu hỏi để tôi có thể cung cấp cho bạn tiền thưởng;) – skerit

+0

Bạn chỉ nên xem trang hướng dẫn sử dụng ('git svn --help'). Thậm chí còn có một phần "VẤN ĐỀ CƠ BẢN" mà không có gì ngạc nhiên khi có trường hợp chính xác của bạn. – user1338062

Trả lời

40

Chỉ cần xóa tùy chọn --stdlayout. Nó có nghĩa là cấu trúc trunk/branch/tags.

3

Nếu bạn có quyền truy cập địa phương để kho SVN của bạn, tôi sẽ khuyên bạn nên sử dụng SubGit để chuyển đổi. Có một vài bước đơn giản:

$ subgit configure path/to/svn/repository 
$ #edit path/to/svn/repository/conf/subgit.conf to specify "core.authorsFile" option to point to your authors-transform.txt 
$ subgit install path/to/svn/repository 

Sau đó, kho lưu trữ Git sẽ được tạo và các kho sẽ được đồng bộ hóa liên tục. Tùy chọn bạn có thể chạy

$ subgit uninstall path/to/svn/repository 

để tắt đồng bộ hóa.

Nếu bạn không có quyền truy cập cục bộ vào kho lưu trữ của mình, bạn sao chép kho lưu trữ của mình với SmartGit. Hiệu ứng sẽ tương tự như "git svn clone" nhưng các khái niệm SVN như bỏ qua, các tùy chọn xử lý EOL, các thẻ cũng sẽ được dịch sang Git (tôi cũng có thể nói về SubGit).

Không có giải pháp nào dựa trên "git-svn".

+0

Cảm ơn bạn đã thay thế, nhưng khi cài đặt subgit vào kho lưu trữ, nó không dịch bất kỳ cam kết svn nào. (Mặc dù nó nói "INSTALLATION SUCCESSFUL") – skerit

+1

Xin lỗi tôi đã đọc sai tin nhắn của bạn, hiện tại subgit hoạt động với bố cục trunk/branches/tags. Nhưng SmartGit chắc chắn sẽ giúp bạn. –

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