Subject: Re: git svn's performance on cloning mono's branches/tags...

From: Andreas Ericsson <[email-masked]>
Date: Fri, 26 Jun 2009 12:57:45 +0200

Hin-Tak Leung wrote:
> On Fri, Jun 26, 2009 at 6:15 AM, Andreas Ericsson<[email-masked]> wrote:
>> Hin-Tak Leung wrote:
>>> (I'm not on list so please CC) - I am trying to git svn clone mono's
>>> repository, and for some strange reason it is doing a complete check
>>> out from revision 1 all the way to each branch/tag . Is this normal or
>>> am I doing anything wrong? I have git svn clone a few other things
>>> recently (R, ghostscript) and I don't remember git doing this, but R
>>> is quite a normal svn layout and I think I only have ghostcript trunk
>>> (no branch/tag).
>>>
>>> What I did was this: I started out with just git-svn clone trunk
>>> (which generated the first two [now-commented out] lines), then I
>>> thought I also want 2.4 branch so I added the next commented-out
>>> section, and ran 'git svn fetch --all'. Then I thought I like the
>>> whole thing - so I commented out most of it and added the 4 lines as
>>> blow - which is also my current git config.
>>>
>>> The problem is that it seems to treat every tag as a branch,
>> This is normal. SVN makes no real distinction between tags and branches,
>> so git-svn has no way of detecting which is which. SVN also allows
>> committing to "tags", so it doesn't make sense for git to store what
>> SVN calls tags as git tags.
>>
>> As for your other questions, I don't know.
>>
>> --
>> Andreas Ericsson                   [email-masked]
>> OP5 AB                             www.op5.se
>> Tel: +46 8-230225                  Fax: +46 8-230231
>>
>> Considering the successes of the wars on alcohol, poverty, drugs and
>> terror, I think we should give some serious thought to declaring war
>> on peace.
>>
> 
> I guess my question is two-fold:
> 1) what is the correct/recommended way of adding tags/branches *after*
> already cloning trunk?
> 

I don't know.

> 2) the current way of cloning svn repository is quite inefficient -
> for every tag/branch, it does:
> r1 -> rX branch 1
> r1 -> rN tag 1
> r1 -> rY branch 2
> r1 -> rM tag 2
> r1 -> rZ branch 3
> etc
> 
> but I think it is possible to track branches to the point where it
> branches off (when 'svn copy' happens), rather than all the way to r1?

This isn't really a question, but a statement with a question mark.

> And in that sense tags are just very short branches.
> 

Often, yes, but they *can* be committed to. SVN's inability to keep
immutable tags is one of the reasons I never looked at it to replace
CVS at $dayjob. But I digress..

> The current behavior is quite bandwith consuming for projects with a
> long history and lots of tags, like mono...
> 

Hmm. I've cloned many subversion repositories to git, and I've never
seen the issues you're seeing. Perhaps because I always cloned the
entire repository the first time, or because I normally do such things
over a high-capacity connection, or because I just fire it up and
forget about it until it's done.

What happens if you ignore the already-cloned svn tree and just do
a new import without trying to continue the old one? Not that I'll
actually do anything about it, as I don't have any problems with it,
but I'm curious even so ;-)

-- 
Andreas Ericsson                   [email-masked]
OP5 AB                             www.op5.se
Tel: +46 8-230225                  Fax: +46 8-230231

Considering the successes of the wars on alcohol, poverty, drugs and
terror, I think we should give some serious thought to declaring war
on peace.