Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to clone a nonstandard svn repo to git?

I try to clone a svn repo to git, but some of the branches are in the svn root dir like follows.

I've tried

$ git clone svn://url/svn-root -T trunk -b branches -b branch1 -b branch2

and

$ git clone svn://url/svn-root -T trunk -b branches -b .

Both are failed to clone the branch1 and branch2 correctly. Please help.

svn-root
├── branch1
├── branch2
├── branches
│   ├── branch3
│   └── branch4
└── trunk
like image 365
kangshiyin Avatar asked Sep 09 '13 07:09

kangshiyin


1 Answers

One interesting tool, mentioned in GitMinutes Episode 20, is SubGit, a plugin for Atalssian Stash (which isn't free, but you can try it for free).
You can know much more about SubGit in "GitMinutes #22: Alexander Kitaev about SubGit".

It is designed to managed unconventional svn repo layout.

http://subgit.com/img/stash/105_repository_layout.png

Dmitry Pavlenko comments:

you should enter in the "Branches" field:

*:refs/heads/*;branches/*:refs/heads/branches/* 
# instead of 
branches/* 

In this case branch1 will be translated to refs/heads/branch1,
branch3 --- to refs/heads/branches/branch3.

Alternatively, if you have limited number of top-level branches, you can enumerate them explicitly:

branch1:refs/heads/branch1;
branch2:refs/heads/branch2;
branches/*:refs/heads/bra‌​nches/*
like image 132
VonC Avatar answered Sep 22 '22 17:09

VonC