ツリーオブジェクトを見るときのgit ls-tree と git cat-file -p は等価

Gitのソースコードを見てて気づいたのですが、下記はどちらも同じ挙動でした。
git ls-tree <ツリーオブジェクト>
git cat-file -p  <ツリーオブジェクト>
git cat-file -p の引数にツリーオブジェクトが指定されると、内部的に ls-treeを呼び出してるみたいです。
buitin/cat-file.c
https://github.com/git/git/blob/v1.8.4/builtin/cat-file.c#L54
	case 'p':
		type = sha1_object_info(sha1, NULL);
		if (type < 0)
			die("Not a valid object name %s", obj_name);

		/* custom pretty-print here */
		if (type == OBJ_TREE) {
			const char *ls_args[3] = { NULL };
			ls_args[0] =  "ls-tree";
			ls_args[1] =  obj_name;
			return cmd_ls_tree(2, ls_args, NULL);
		}
カテゴリ:

人気記事