I\'m working on a Java legacy project which has 20 modules connected to each other. So, each module has it\'s own branch and tag. The structure is like this:
I have found git svn clone with --stdlayout didn't do quite the right thing for me.
In the same situation this strategy worked well:
git svn init --trunk $repo/projects/module1/trunk --tags $repo/projects/module1/tag --branches $repo/projects/module1/branch git svn fetch
Edit: I misread the question and answered what I thought you were asking, not what you actually asked.
Cloning a single Subversion directory is easy, and it actually doesn't matter which directory you clone. Just don't specify any of the "layout" arguments, and give the path to the trunk directly:
git svn clone http://path.to.svn.repo/module1/trunk
A "normal" git svn clone
would look something like the following:
git svn clone --stdlayout http://path.to.svn.repo/
What you want to use instead will be thus:
git svn clone --stdlayout http://path.to.svn.repo/module1/
That will find the trunk
, branch
and tag
subfolders of the module1
folder, and clone them for you.
I just wanted to add more information based on @me_and's answer.
the command given to clone just trunk is gonna work but in the git folder the structure created was:
refs
|--remotes
|--git-svn
which is equivalent of refs/remotes/git-svn.
if we do this instead:
git svn clone https://domain/svn/repo/trunk --no-metadata --authors-file=authors.txt --trunk=https://domain/svn/repo/trunk
then the structure created is:
refs
|--remotes
|--origin
|--trunk
which is equivalent to refs/remotes/origin/trunk
The second structure looks more git-friendly and potentially could reduce the commands and shell scripts you have to write :)
P.S. the [--no-metadata] and [--author-file] arguments are optional.