git-svn: only look at the new parts of svn:mergeinfo
commitabfef3bbf5f637c86032763632393ce1ffd23ccc
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Thu, 17 Apr 2014 06:54:05 +0000 (16 23:54 -0700)
committerEric Wong <normalperson@yhbt.net>
Fri, 24 Oct 2014 22:55:26 +0000 (24 22:55 +0000)
tree4138507c3c04e5692cdce4586ee077180c77e3b9
parentfbecd99861ea5795aeba46faf2ac7a8c1b70d485
git-svn: only look at the new parts of svn:mergeinfo

In a Subversion repository where many feature branches are merged into a
trunk, the svn:mergeinfo property can grow very large. This severely
slows down git-svn's make_log_entry() because it is checking all
mergeinfo entries every time the property changes.

In most cases, the additions to svn:mergeinfo since the last commit are
pretty small, and there is nothing to gain by checking merges that were
already checked for the last commit in the branch.

Add a mergeinfo_changes() function which computes the set of interesting
changes to svn:mergeinfo since the last commit. Filter out merged
branches whose ranges haven't changed, and remove a common prefix of
ranges from other merged branches.

This speeds up "git svn fetch" by several orders of magnitude on a large
repository where thousands of feature branches have been merged.

Signed-off-by: Jakob Stoklund Olesen <stoklund@2pi.dk>
Signed-off-by: Eric Wong <normalperson@yhbt.net>
perl/Git/SVN.pm