From: Avery Pennarun Date: Wed, 1 Dec 2010 10:44:18 +0000 (-0800) Subject: midx: auto-remove midx files that refer to missing .idx files. X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=650abd5c20d1c178778d9a4374e9561f1e06d600;p=packages%2Fb%2Fbup.git midx: auto-remove midx files that refer to missing .idx files. Normally an .idx file doesn't ever disappear, but it could happen if you run 'git gc' on your repository. Which I thought would be a terrible idea, but apparently it can actually save a lot of space for some people (although it takes a pretty long time to run). And when that happens, all your .idx files move around. So let's be polite when that happens. We'll print a warning the first time, but then shut up after that since the flawed midx file will just go away. Reported by Peter Rabbitson. Signed-off-by: Avery Pennarun --- diff --git a/lib/bup/git.py b/lib/bup/git.py index 6a51354..fc03fe6 100644 --- a/lib/bup/git.py +++ b/lib/bup/git.py @@ -399,7 +399,10 @@ class PackIdxList: log(('warning: index %s missing\n' + ' used by %s\n') % (n, mxf)) broken += 1 - if not broken: + if broken: + del mx + unlink(full) + else: midxl.append(mx) midxl.sort(lambda x,y: -cmp(len(x),len(y))) for ix in midxl: