Subject: Re: svn repository URL and git

From: Mathias Lafeldt <[email-masked]>
Date: Wed, 27 Oct 2010 17:31:58 +0200

H Krishnan wrote:
> Hi, 
> We have started using git and git-svn. 
> I was thrilled to see that two people cloning using "git svn clone" 
> from the same repository got the same sha1 IDs for the commits which 
> meant that each of us could sync with svn independently while still 
> being able to share code among ourselves. 
> But my excitement was shortlived as the sha1 IDs were different if we 
> refer to the svn server using an alias. For example, using 
> http://mysvnserver.mydomain.com/repos/myproject/trunk gave different 
> sha1 IDs from using http://mysvnserver/repos/myproject/trunk even 
> though both refer to the same repository. This also disallowed using 
> mirrors of the repository for cloning. 
> Apparently the sha1 ID is generated from the full path of the URL. 
> Instead of this, could git-svn init be made to accept an optional 
> "prefix" argument as well which is filtered out of the URL before 
> building the sha1 ID. This will allow easy support for the oft 
> requested support for "svn switch --relocate". How much of an effort 
> is this? I don't know perl or git internals well enough for me to take 
> a stab at it but I am willing to learn if someone can give me some 
> pointers. 
> Krishnan

The problem is the "git-svn-id" which is automatically appended to each
commit done with git-svn. This ID consists of the URL and the UUID of
the corresponding SVN repository. A different git-svn-id value results
in a different commit SHA1 (i.e. a different commit to git).

I guess git-svn's --rewrite-root option might help here. Also, you have
to make sure that your SVN repos have the same UUID (with svnadmin
setuuid), of course.

-Mathias