git-svn: improve rebase/mkdirs performance
authorDair Grant <dair@feralinteractive.com>
Thu, 5 Nov 2015 10:26:15 +0000 (10:26 +0000)
committerEric Wong <normalperson@yhbt.net>
Tue, 10 Nov 2015 01:35:01 +0000 (01:35 +0000)
commit82625748223dd8977f6c1b8cfe53f7353399bd34
tree35915055d92334e76785752519c928539261ab7c
parentf34be46e47773d03e9d09641209121591a6b37c8
git-svn: improve rebase/mkdirs performance

Processing empty_dir directives becomes extremely slow for svn
repositories with a large enough history.

This is due to using a single hash to store the list of empty
directories, with the expensive step being purging items from
that hash using grep+delete.

Storing directories in a hash of hashes improves the performance
of this purge step and removes a potentially lengthy delay after
every rebase/mkdirs command.

The svn repository with this behaviour has 110K commits with
unhandled.log containing 170K empty_dir directives.

This takes 10 minutes to process when using a single hash, vs
3 seconds with a hash of hashes.

Signed-off-by: Dair Grant <dair@feralinteractive.com>
Signed-off-by: Eric Wong <normalperson@yhbt.net>
perl/Git/SVN.pm