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