I've got a moderately large repository created from a git-svn import (which 
I want to keep bi-directional). For now the subversion side cannot be 
restructured (one day!) so the layout of the tree is not up for debate at 
the moment.

The git-svn import used the --ignore-paths option and created several empty 

The primary problem I'm having is that operations like git blame take a 
long time!

On one text file here on an SSD backing store it takes almost 2 minutes.

Now the number of commits in this subdirectory of tree is not massive, but 
the overall number of commits obviously are.

Most commits to subversion only happen in a sub folder (not always true and 
in fact one of the reasons I made a git-svn clone was to make mass changes 

In order to increase performance are there any strategies I can adopt?

I've already tried using filter-branch with --prune-empty (which took three 
days to run on a tmpfs!!) but it didn't seem to help much.

Some kind of strategy I was thinking was somehow creating pack files that 
only deal with a subfolder tree in each. There are ~12k top level folders, 
so this would be a lot of pack files to look at unless git knew to ignore 
the others completely. Due to the very low number of objects that are 
shared across subtrees, having objects duplicated in different packs 
wouldn't be bad IMO if the performance gains justify it.

Some stats:

After a git gc --aggressive the .git folder is 345MB
There are 127671 commits (git rev-list HEAD --count)
There are no branches (other than git-svn branch)
There are ~12k top level folders. Each folder has a single subfolder which 
itself contains two further folders, one contains one file (rpm .spec) and 
the other various files (typically scripts or patches - no binaries).
A checkout of HEAD is 463MB
A typical git blame on a typical SPEC file takes 1m 40s.

Any thoughts on how I could make this nicer/faster?

Also if anyone knows of a way to make git svn rebase ignore the empty 
commits (i.e. so I can avoid future, periodic filter-branch --prune-empty 
calls) please let me know!!




Colin Guthrie

Day Job:
  Tribalogic Limited http://www.tribalogic.net/
Open Source:
  Mageia Contributor http://www.mageia.org/
  PulseAudio Hacker http://www.pulseaudio.org/
  Trac Hacker http://trac.edgewall.org/

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 
to git-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to