Crushed by a giant packfile

Frits Jalvingh jal at etc.to
Thu Nov 26 11:26:14 GMT 2009


If you need to find out which revision causes the giant pack you can try to do 
a "binary search" to find our the revision that is causing the file to grow 
this big. You can do that as follows:

1. Look at the current revision number of the branch. Say it's 500.
2. Create a work directory that is NOT a shared repository.
3. Branch a new copy of the problem repo /on revision 250/:
  bzr branch -r 250 [bad-repo-path] work
4. Check how big it's pack files are. If the pack file is already big then 
delete the work dir (including the just created repo), go back to step 2 and 
use 125 as the revno.
5. If the pack files are small go into the branch and pull new revisions in it 
repeatedly, i.e.:
   bzr pull -r 300
   check repo size
   bzr pull -r 400
   check repo size

By doing this repeatedly you can quite quickly zoom in to the revision that is 
causing the problem. It's a better way than looking to a load of log because 
using this method you are certain which revision causes the problem. It also 
sidesteps some bugs in bzr log: it does not always show you all the files 
that were changed in a revision(!!!!!) - which has still not been fixed since 
1.14.

If you cannot find anything wrong with your revisions you can also try 
something else: see if there are problems in your commits. You do this as 
follows:
1. Find a text file in your repo that you are /certain/ is changed very 
little.
2. Do bzr log -v [that file]
This should show only very few commits. Look if there are commits changing 
this file that you did not expect (say commit 236) and check them:

bzr log -r 236 -v -n0 
(do NOT add the file again)
If all's well this log should also show the file as changed. If it does not 
you have hit a bazaar bug whilecommiting somewhere, and the log bug is 
preventing you from getting tho know that.

Good luck,

Frits




More information about the bazaar mailing list