nullf = open('/dev/null')
def debug(s):
- if opt.verbose:
+ if opt.verbose > 1:
log(s)
def run(argv):
stdout=nullf, stderr=nullf, stdin=nullf)
rv = p.wait()
except OSError:
- log('fsck: warning: par2 not found; disabling recovery features.\n')
+ log('fsck: Warning: "par2" not found; disabling recovery features!')
else:
par2_ok = 1
for b in chunkyreader(f, os.fstat(f.fileno()).st_size - 20):
sum.update(b)
if sum.digest() != wantsum:
- raise ValueError('expected %r, got %r' % (wantsum.encode('hex'),
+ raise ValueError('Expected %r, got %r' % (wantsum.encode('hex'),
sum.hexdigest()))
-
+
def git_verify(base):
if opt.quick:
try:
quick_verify(base)
except Exception, e:
- debug('error: %s\n' % e)
+ debug('Error: %s!' % e)
return 1
return 0
else:
return run(['git', 'verify-pack', '--', base])
-def do_pack(base, last):
+def do_pack(base, last, par2_exists):
code = 0
if par2_ok and par2_exists and (opt.repair or not opt.generate):
vresult = par2_verify(base)
if opt.repair:
rresult = par2_repair(base)
if rresult != 0:
- print '%s par2 repair: failed (%d)' % (last, rresult)
+ action_result = 'failed'
+ log('%s par2 repair: Failed (%d)!' % (last, rresult))
code = rresult
else:
- print '%s par2 repair: succeeded (0)' % last
+ action_result = 'repaired'
+ log('%s par2 repair: Succeeded (0).' % last)
code = 100
else:
- print '%s par2 verify: failed (%d)' % (last, vresult)
+ action_result = 'failed'
+ log('%s par2 verify: Failed (%d)!' % (last, vresult))
code = vresult
else:
- print '%s ok' % last
+ action_result = 'ok'
elif not opt.generate or (par2_ok and not par2_exists):
gresult = git_verify(base)
if gresult != 0:
- print '%s git verify: failed (%d)' % (last, gresult)
+ action_result = 'failed'
+ log('%s Git verify: Failed (%d)!' % (last, gresult))
code = gresult
else:
if par2_ok and opt.generate:
presult = par2_generate(base)
if presult != 0:
- print '%s par2 create: failed (%d)' % (last, presult)
+ action_result = 'failed'
+ log('%s par2 create: Failed (%d)!' % (last, presult))
code = presult
else:
- print '%s ok' % last
+ action_result = 'generated'
else:
- print '%s ok' % last
+ action_result = 'ok'
else:
assert(opt.generate and (not par2_ok or par2_exists))
- debug(' skipped: par2 file already generated.\n')
+ action_result = 'exists' if par2_exists else 'skipped'
+ if opt.verbose:
+ print last, action_result
return code
git.check_repo_or_die()
if not extra:
- debug('fsck: No filenames given: checking all packs.\n')
+ debug('fsck: No filenames given: checking all packs.')
extra = glob.glob(git.repo('objects/pack/*.pack'))
code = 0
if par2_exists and os.stat(base + '.par2').st_size == 0:
par2_exists = 0
sys.stdout.flush()
- debug('fsck: checking %s (%s)\n'
+ debug('fsck: Checking %s (%s) ...'
% (last, par2_ok and par2_exists and 'par2' or 'git'))
if not opt.verbose:
- progress('fsck (%d/%d)\r' % (count, len(extra)))
-
+ progress_update('fsck (%d/%d) ...' % (count + 1, len(extra)))
+
if not opt.jobs:
- nc = do_pack(base, last)
+ nc = do_pack(base, last, par2_exists)
code = code or nc
count += 1
else:
outstanding[pid] = 1
else: # child
try:
- sys.exit(do_pack(base, last))
+ sys.exit(do_pack(base, last, par2_exists))
except Exception, e:
- log('exception: %r\n' % e)
+ log('Exception: %r' % e)
sys.exit(99)
while len(outstanding):
code = code or nc
count += 1
if not opt.verbose:
- progress('fsck (%d/%d)\r' % (count, len(extra)))
+ progress_update('fsck (%d/%d) ...' % (count + 1, len(extra)))
-if not opt.verbose and istty2:
- log('fsck done. \n')
+progress_end('fsck done.')
sys.exit(code)