Subject: Re: git-svn failure when symlink added in svn

From: Eric Wong <[email-masked]>
Date: Mon, 30 Apr 2007 08:43:59 -0700

Seth Falcon <[email-masked]> wrote:
> Eric Wong <[email-masked]> writes:
> 
> > Seth Falcon <[email-masked]> wrote:
> >> Eric: is there any way to undo some of the svn revs that have been
> >> retrieved using git-svn fetch and then refetch them? 
> 
> > Assuming you're not using something crazy like noMetadata, you can just
> > use update-ref on the remote heads to the last known good revisions and
> > remove the associated .rev_db files.
> >
> > Otherwise you'll have to delete entries from the .rev_db files, the
> > format is one line per-revision, the revision is the line number of the
> > file.
> 
> Hmm, not sure I understood.  Here's what I tried:
> 
> I'm tracking two branches via git-svn.  For each, I used git log
> remotes/<branch> to find a revision that I expect to be ok and noted
> the sha1.  Then I did: 
> 
>     git-update-ref remotes/git-svn a27b11c1

You may need to specify "refs/": "refs/remotes/git-svn".
Is there a .git/remotes/git-svn ref file now?

> and similar, but with different sha1 for the other branch.  Next I
> removed the .rev_db* files (there was one for each svn branch) and
> tried doing git-svn fetch.  This seemed to rebuild the .rev_db, but
> eventually I ended up with:
> 
> Done rebuilding .git/svn/git-svn/.rev_db.00db46b3-68df-0310-9c12-caf00c1e9a41
>         M       src/<somepath>
>         M       src/<another>
> Incomplete data: Delta source ended unexpectedly at /Users/seth/scm/bin/git-svn line 2982
> 
> And if I rerun git svn fetch, I get:
> 
> Index mismatch: 9c07a6009029e4a1d834ff126f705c4db3c4bce7 != 67dc53678f759c52a93a281f13fadb08799f86b2
> rereading 0f12c8c092600c8a3337ec35d153d3a76ce2329d
>         M       src/<somepath>
>         M       src/<another>
> Incomplete data: Delta source ended unexpectedly at /Users/seth/scm/bin/git-svn line 2982
> 
> 
> [where <somepath> and <another> are the same in both cases]
> 
> Did I miss a step or misunderstand how to undo?  What's strange is
> that if I do git show 0f12c8c, I see a patch that is looks like it came
> from a fetch using the my broken version of git-svn -- do I need to
> clear out objects before refetching?

I might have left some steps (I've been all over the place lately :/).
You probably need to do all that and also need to edit
.git/svn/.metadata and set the {branches,tags}-maxRev fields to the last
known good revisions if you use globs.

Also you can try removing the index files inside .git/svn (but they
*should* be auto-checked and rebuilt (as they were in the second
"git-svn fetch" run you did...

-- 
Eric Wong