#!/usr/bin/python # git1.0 cat-file.c sha1_file.c:read_object_with_reference import sys import zlib required_type, sha1 = sys.argv[1:] # sha1_file.c:sha1_file_name filename = '.zit/objects/{}/{}'.format(sha1[:2], sha1[2:]) decompressed = zlib.decompress(open(filename).read()) header, contents = decompressed.split('\0', 1) actual_type, length = header.split(' ') assert int(length) == len(contents) if required_type == '-t': print actual_type else: assert actual_type == required_type sys.stdout.write(contents)