#define USE_THE_REPOSITORY_VARIABLE

#include "test-tool.h"
#include "hex.h"
#include "match-trees.h"
#include "object-name.h"
#include "repository.h"
#include "setup.h"
#include "tree.h"

int cmd__match_trees(int ac UNUSED, const char **av)
{
	struct object_id hash1, hash2, shifted;
	struct tree *one, *two;

	setup_git_directory();

	if (repo_get_oid(the_repository, av[1], &hash1))
		die("cannot parse %s as an object name", av[1]);
	if (repo_get_oid(the_repository, av[2], &hash2))
		die("cannot parse %s as an object name", av[2]);
	one = parse_tree_indirect(&hash1);
	if (!one)
		die("not a tree-ish %s", av[1]);
	two = parse_tree_indirect(&hash2);
	if (!two)
		die("not a tree-ish %s", av[2]);

	shift_tree(the_repository, &one->object.oid, &two->object.oid, &shifted, -1);
	printf("shifted: %s\n", oid_to_hex(&shifted));

	return 0;
}
