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

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

From
EWEric Wong <normalperson@yhbt.net>
Date
Nov 26, 2009, 01:59 UTC
Message-ID
<20091126015919.GA22762@dcvr.yhbt.net>
In-Reply-To
<1259198081-sup-3175@cannonball>
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
Previous: Ingmar Vanhassel
Message 2 of 2 in “git-svn: dcommit --commiturl rebases against fetch url rather than against commit url”
  1. Ingmar VanhasselNov 26, 2009
  2. Eric WongNov 26, 2009

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.