diff options
author | Jed Brown <jed@59A2.org> | 2014-05-25 22:44:48 -0600 |
---|---|---|
committer | Jed Brown <jed@59A2.org> | 2014-05-25 22:47:53 -0600 |
commit | 41fbd824da3c928df416398d2c71d7a237945d76 (patch) | |
tree | cbe02033dd769ecfb3fe51ceeae4bd47616d8980 /git-fat | |
parent | 6b01b1a7080e3aad3b6c19e3938d83a3168cfd4e (diff) | |
parent | 6ca25da37333bbffe10cbb837c0002fd250931b1 (diff) | |
download | git-fat-41fbd824da3c928df416398d2c71d7a237945d76.tar.gz |
Merge branch 'add_verify_command' of github:jmurty/git-fat (PR #36)
* 'add_verify_command' of github:jmurty/git-fat:
Add `verify` command to check git-fat object data matches hash filename.
Conflicts:
git-fat
Diffstat (limited to 'git-fat')
-rwxr-xr-x | git-fat | 22 |
1 files changed, 21 insertions, 1 deletions
@@ -422,6 +422,24 @@ class GitFat(object): sys.stderr.write('fatal: git-fat is not yet configured in this repository.\n') sys.stderr.write('Run "git fat init" to configure.\n') sys.exit(1) + + def cmd_verify(self): + """Print details of git-fat objects with incorrect data hash""" + corrupted_objects = [] + for obj in self.catalog_objects(): + fname = os.path.join(self.objdir, obj) + h = hashlib.new('sha1') + for block in readblocks(open(fname)): + h.update(block) + data_hash = h.hexdigest() + if obj != data_hash: + corrupted_objects.append((obj, data_hash)) + if corrupted_objects: + print('Corrupted objects: %d' % len(corrupted_objects)) + for obj, data_hash in corrupted_objects: + print('%s data hash is %s' % (obj, data_hash)) + sys.exit(1) + def cmd_init(self): self.setup() if self.is_init_done(): @@ -547,6 +565,8 @@ if __name__ == '__main__': fat.cmd_pull(sys.argv[2:]) elif cmd == 'gc': fat.cmd_gc() + elif cmd == 'verify': + fat.cmd_verify() elif cmd == 'checkout': fat.cmd_checkout(sys.argv[2:]) elif cmd == 'find': @@ -554,4 +574,4 @@ if __name__ == '__main__': elif cmd == 'index-filter': fat.cmd_index_filter(sys.argv[2:]) else: - print('Usage: git fat [init|status|push|pull|gc|checkout|find|index-filter]', file=sys.stderr) + print('Usage: git fat [init|status|push|pull|gc|verify|checkout|find|index-filter]', file=sys.stderr) |