threads / discuss / 25756

Using git-svn with svnsync mirror

Subject: Using git-svn with svnsync mirror

## tl;dr

3 messages between Nov 16, 2010 and Nov 16, 2010.

replies: 2people: 2as markdown or json

Phillip Hutchings· Nov 16, 2010, 02:08 UTC · lore
Hi,

I've got an svnsync mirror of a large repository, and I'm trying to do a git-svn clone from the mirror as the main server is off site. This works well until I try to dcommit or use git svn info.

My investigations show that working_head_info in git-svn doesn't account for using svnsync properties, so it cannot find a log entry that matches a config entry.

My perl isn't good enough to patch this yet, so I was wondering if anyone else had encountered it.

I could change the config URL to match, but I'm worried this will break things.

Tim Stoakes· Nov 16, 2010, 04:23 UTC · re: Phillip Hutchings · lore

Re: Using git-svn with svnsync mirror

Phillip Hutchings(sitharus@sitharus.com)@161110-02:08:
Show 15 quoted lines
> Hi,
> 
> I've got an svnsync mirror of a large repository, and I'm trying to do
> a git-svn clone from the mirror as the main server is off site. This
> works well until I try to dcommit or use git svn info.
> 
> My investigations show that working_head_info in git-svn doesn't
> account for using svnsync properties, so it cannot find a log entry
> that matches a config entry.
> 
> My perl isn't good enough to patch this yet, so I was wondering if
> anyone else had encountered it.
> 
> I could change the config URL to match, but I'm worried this will
> break things.

You want to use rewriteRoot option so that changing the URL does not break things (the URL is stored in each git commit's log).

I use something like this all the time:
[svn-remote "svn"]
  rewriteRoot = svn://svn.foo.com/repo/blah   <-- the master
  url = svn://svn-mirror.foo.com/repo/somewhere/else/blah  <-- a slave

If you've imported from the mirror without this option, then you're stuck I think. You could work around it by swapping the URLs in the rewriteRoot and url fields (essentially rewriting the URLs in the wrong order), but this is strictly 'wrong'.

Tim
-- 
Tim Stoakes
Phillip Hutchings· Nov 16, 2010, 07:31 UTC · re: Tim Stoakes · lore

Re: Using git-svn with svnsync mirror

On 16/11/2010, at 5:23 PM, Tim Stoakes wrote:
Show 29 quoted lines
> Phillip Hutchings(sitharus@sitharus.com)@161110-02:08:
>> Hi,
>> 
>> I've got an svnsync mirror of a large repository, and I'm trying to do
>> a git-svn clone from the mirror as the main server is off site. This
>> works well until I try to dcommit or use git svn info.
>> 
>> My investigations show that working_head_info in git-svn doesn't
>> account for using svnsync properties, so it cannot find a log entry
>> that matches a config entry.
>> 
>> My perl isn't good enough to patch this yet, so I was wondering if
>> anyone else had encountered it.
>> 
>> I could change the config URL to match, but I'm worried this will
>> break things.
> 
> You want to use rewriteRoot option so that changing the URL does not
> break things (the URL is stored in each git commit's log).
> 
> I use something like this all the time:
> [svn-remote "svn"]
>  rewriteRoot = svn://svn.foo.com/repo/blah   <-- the master
>  url = svn://svn-mirror.foo.com/repo/somewhere/else/blah  <-- a slave
> 
> If you've imported from the mirror without this option, then you're
> stuck I think. You could work around it by swapping the URLs in the
> rewriteRoot and url fields (essentially rewriting the URLs in the wrong
> order), but this is strictly 'wrong'.

I cloned using --use-svnsync-props, this resulted in the log entries having the correct url to the master, but git-svn being unable to link that url back to the config entry.

Guess I'm in for a recloning then.

-- Phillip Hutchings sitharus@sitharus.com

← back to recent threads