On Monday, March 11, 2013 1:30:07 AM UTC+1, Vadim Zeitlin wrote:
> I'm in the process of converting an existing svn repository to git. The
> first step was a standard "git svn clone" that went successfully (after
> taking 15 hours to complete). However I don't want to stop there and would
> like massage the repository a little before making it publicly available.
> The first thing I'd like to do is to replace all references to subversion
> revision numbers in the commit messages with the corresponding git commit
> SHA1s. I've written a small message filter script called "svnmsg2git" that
> searches for all occurrences of r12345, runs "git svn find-rev r12345" and
> then -- and this is the important part -- looks up the new commit id
> corresponding to this under .git-rewrite/map. This seemed to work well in
> limited testing I did initially but after running
> git filter-branch --msg-filter svnmsg2git --tag-name-filter cat -- --all
> on all ~50k revisions, I have a couple of dozens of errors which happen
> because the file .git-rewrite/map/$commit doesn't exist yet when I'm trying
> to look it up.
> Does anybody know of a way to fix this? This happens apparently because
> filter-branch doesn't process the commits in their svn order, and when one
> of them is on a branch while the other one is on the trunk, it can happen
> that the commit references a previous svn revision is processed before the
> commit corresponding to this revision itself. At least this is the only
> explanation I see. But even if my hypothesis is correct, I still have no
> idea about how to force filter-branch to do things in the "right" order.
> Thanks in advance for any ideas!
For a topic this advanced, I think you should rather ask for help at the
Git developer list: https://gist.github.com/tfnico/4441562
You received this message because you are subscribed to the Google Groups "Git
for human beings" group.
To unsubscribe from this group and stop receiving emails from it, send an email
For more options, visit https://groups.google.com/groups/opt_out.