Re: git svn clone, a non-standard layout question

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Aug 12, 2012 at 11:23:16PM -0400, Christopher Marshall wrote:
> I would like to use git svn to clone an svn repo with a non-standard
> branches layout roughly like this:
> trunk/
> tags/
> branches/
>    b1
>    b2
>    ...
>    bdir/
>       b3
>       b4
>       ...
> 
> That is, every directory under branches is a branch except bdir, and
> every directory under bdir is a branch.
> 
> One thing I have attempted is this:
>    git svn clone \
>                       --trunk=trunk \
>                       --branches=branches/bdir \
>                       --branches=branches \
>                       --tags=tags \
>                       --prefix=svn/ $SVN_REPO \
>                       git.svn
> 
> That properly creates the remote tracking branches b1,b2,b3,b4 but
> also creates the remote tracking branch bdir, which I am trying to
> exclude.  If I were to settle for this, the bdir branch would have
> enormous trees committed to it (when I ran against the real svn repo I
> am targetting).
> 
> I get can exactly the branch mapping I want by editing .git/config like this:
> [svn-remote "svn"]
>         url = file:///home/chris/programs/svn/repo
>         fetch = trunk:refs/remotes/svn/trunk
>         tags = tags/*:refs/remotes/svn/tags/*
>         branches = branches/{b1,b2}:refs/remotes/svn/*
>         branches = branches/bdir/{b3,b4}:refs/remotes/svn/*
> 
> but then I would have to manually add branches before every git svn
> fetch, or risk not importing new branches that other developers have
> created since I last fetched.
> 

I had a similar problem, but I solved it using "ignore-paths" and "ignore-refs".
If I remember correctly, you need to set both to ignore bdir directly without
ignoring b3, b4,...

For ignore-refs, pls see cdb51a13c3cf4830d499d1138160eacdd2b8aa46, as it is currently
undocumented.

So I would try experimenting with the following settings:

[svn-remote "svn"]
	url = file:///home/chris/programs/svn/repo
	fetch = trunk:refs/remotes/svn/trunk
	tags = tags/*:refs/remotes/svn/tags/*
	branches = branches/{b1,b2}:refs/remotes/svn/*
	branches = branches/bdir/{b3,b4}:refs/remotes/svn/*

	# Operates on the imported git branches
	ignore-refs  = ^refs/remotes/bdir$

	# Operates on the SVN branches; you might try it first without this statement
	ignore-paths = ^branches/bdir$
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]