Make conversion runs deterministic by sorting what's returned via hash from the SVN... 1.0.7
authorUlrich Sp├Ârlein <uqs@spoerlein.net>
Fri, 23 Nov 2012 09:32:35 +0000 (10:32 +0100)
committerTorgny Nyblom <nyblom@kde.org>
Mon, 26 Nov 2012 13:59:48 +0000 (14:59 +0100)
commit123433669f472eb7eee31f62ea1601f545a31587
treeec43f00249605d0e8db15fecc8d574171a4ccfc9
parent8314eb23393db323b4bb5e34a9ad4e8ebc4014fb
Make conversion runs deterministic by sorting what's returned via hash from the SVN API.

An SVN commit spanning multiple paths that shall be turned into
multiple branches in git would result in the git commits to be fed into
git fast-import in arbitrary order. This is problematic for merge
commits, as it means the list of parent commits for the merge commit
will have an arbitrary order. Fix this by always handling the paths in
an SVN commit in order. This makes svn2git conversion runs reproducible.

Unfortunately, commits where paths have been removed and added again,
might no longer be handled correctly. I haven't found such a case in the
FreeBSD repository however.

This is IHMO a bug in git, but it all hinges on semantics like list of
parents vs. set of parents and how you define a hash on a set of objects
that have no natural order.
src/svn.cpp