def cmd_rev_parse(args): if args.type: fmt = args.type.encode() repo = rp.repo_find() print(object.object_find(repo, args.name, args.type, follow=True))
def cmd_ls_tree(args): repo = rp.repo_find() obj = object.object_read( repo, object.object_find(repo, args.object, fmt=b'tree')) for item in obj.items: print("{0} {1} {2}\t{3}".format( "0" * (6 - len(item.mode)) + item.mode.decode("ascii"), object.object_read(repo, item.sha).fmt.decode("ascii"), item.sha, item.path.decode("ascii")))
def cmd_checkout(args): repo = rp.repo_find() obj = object.object_read(repo, object.object_find(repo, args.commit)) # If the object is a commit, grab its tree if obj.fmt == b'commit': obj = object.object_read(repo, obj.kvlm[b'tree'].decode("ascii")) # Verify that path is an empty directory if os.path.exists(args.path): if not os.path.isdir(args.path): raise Exception("Not a directory {0}!".format(args.path)) if os.listdir(args.path): raise Exception("Not empty {0}!".format(args.path)) else: os.makedirs(args.path) tree_checkout(repo, obj, os.path.realpath(args.path).encode())
def cat_file(repo, obj, fmt=None): obj = object.object_read(repo, object.object_find(repo, obj, fmt=fmt)) sys.stdout.buffer.write(obj.serialize())
def cmd_log(args): repo = rp.repo_find() print("digraph wyaglog{") log_graphviz(repo, object.object_find(repo, args.commit), set()) print("}")