threads / discuss / 21757

git-svn: dcommit --commiturl rebases against fetch url rather than against commit url

Subject: git-svn: dcommit --commiturl rebases against fetch url rather than against commit url

## tl;dr

2 messages between Nov 26, 2009 and Nov 26, 2009.

replies: 1people: 2as markdown or json

Ingmar Vanhassel· Nov 26, 2009, 01:15 UTC · lore
Hi Eric & list,

I'm using a git-svn setup where svn-remote.svn.url is set to use anonymouse svn, and svn-remote.svn.commiturl uses my ssh+svn:// login.

I'm using anonymous svn for fetching because this git-svn import is shared with a few other developers, who don't have commit access, but who do prefer to use a git-svn import over SVN, for their work. Since I use anonsvn for the import they can continue my import.

When I dcommit to svn, git-svn happily commits the first commit. When it tries to rebase after that it fetches from the anonsvn url, which is synced only ever 5 or 10 minutes. Thus, it doesn't find my commit, and it aborts, meaning I need to wait until anonsvn catches up, before being able to do another commit.

Any suggestions on how this could be solved without reimporting with the rewriteRoot option set?

-Ingmar
-- 
Exherbo KDE, X.org maintainer
Eric Wong· Nov 26, 2009, 01:59 UTC · re: Ingmar Vanhassel · lore

Re: git-svn: dcommit --commiturl rebases against fetch url rather than against commit url

Ingmar Vanhassel <ingmar@exherbo.org> wrote:
Show 15 quoted lines
> Hi Eric & list,
> 
> I'm using a git-svn setup where svn-remote.svn.url is set to use
> anonymouse svn, and svn-remote.svn.commiturl uses my ssh+svn:// login.
> 
> I'm using anonymous svn for fetching because this git-svn import is
> shared with a few other developers, who don't have commit access, but
> who do prefer to use a git-svn import over SVN, for their work. Since I
> use anonsvn for the import they can continue my import.
> 
> When I dcommit to svn, git-svn happily commits the first commit. When it
> tries to rebase after that it fetches from the anonsvn url, which is
> synced only ever 5 or 10 minutes. Thus, it doesn't find my commit, and
> it aborts, meaning I need to wait until anonsvn catches up, before being
> able to do another commit.
Hi Ingmar,

Wow, talk about weird corner cases. Is this the monster KDE SVN repo? I suppose the sync delay and multiple servers is necessary for that thing. I wrote commitUrl because I needed to work on a tiny repo :) (and it was migrated fully to git shortly after)

> Any suggestions on how this could be solved without reimporting with
> the rewriteRoot option set?

Depending on how big your imported repo is, I might want to keep two copies since rewriteRoot can be messy. So keep using the anonymous one shared with your developers, and make a full copy of $GIT_DIR for yourself to run git filter-branch against.

That means don't write to the anonymous one at all here, just copy that entire $GIT_DIR in case something goes wrong, you can recopy and tweak the procedure (It's been a while since I've tried this :)

 * write a git filter-branch script that rewrites the git-svn-id:
   lines to the svn+ssh:// URL,  I haven't used filter-branch in
   a while but this should work...
 * remove all .rev_map.* files under $GIT_DIR/svn
 * change your $GIT_CONFIG file to point to the svn+ssh URL
   no need to use the commitUrl option anymore, either
 * remove $GIT_DIR/svn/.metadata to be safe, too
 * run "git svn fetch"
   This last step should rebuild all the .rev_map.* files under
   $GIT_DIR/svn.
Hopefully that works for you, let us know how it goes.
-- 
Eric Wong

← back to recent threads