git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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

From
PBPeter Baumann <waste.manager@gmx.de>
Date
Aug 13, 2012, 06:31 UTC
Message-ID
<20120813063132.GD10899@m62s10.vlinux.de>
In-Reply-To
<CANW+GuQ=egge=NcdSakChYXXZkW=MsG9f3i9yNvoutXXVFcPzQ@mail.gmail.com>
On Sun, Aug 12, 2012 at 11:23:16PM -0400, Christopher Marshall wrote:
Show 43 quoted lines
> 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$
Previous: Christopher MarshallNext: Christopher Marshall
Message 2 of 5 in “git svn clone, a non-standard layout question”
  1. Christopher MarshallAug 13, 2012
  2. Peter BaumannAug 13, 2012
  3. Christopher MarshallAug 13, 2012
  4. Peter BaumannAug 13, 2012
  5. Christopher MarshallAug 13, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.