Squashed 'third_party/git/' content from commit cb71568594
git-subtree-dir: third_party/git git-subtree-split: cb715685942260375e1eb8153b0768a376e4ece7
This commit is contained in:
commit
1b593e1ea4
3629 changed files with 1139935 additions and 0 deletions
98
t/helper/test-repository.c
Normal file
98
t/helper/test-repository.c
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
#include "test-tool.h"
|
||||
#include "cache.h"
|
||||
#include "commit-graph.h"
|
||||
#include "commit.h"
|
||||
#include "config.h"
|
||||
#include "object-store.h"
|
||||
#include "object.h"
|
||||
#include "repository.h"
|
||||
#include "tree.h"
|
||||
|
||||
static void test_parse_commit_in_graph(const char *gitdir, const char *worktree,
|
||||
const struct object_id *commit_oid)
|
||||
{
|
||||
struct repository r;
|
||||
struct commit *c;
|
||||
struct commit_list *parent;
|
||||
|
||||
setup_git_env(gitdir);
|
||||
|
||||
memset(the_repository, 0, sizeof(*the_repository));
|
||||
|
||||
/* TODO: Needed for temporary hack in hashcmp, see 183a638b7da. */
|
||||
repo_set_hash_algo(the_repository, GIT_HASH_SHA1);
|
||||
|
||||
if (repo_init(&r, gitdir, worktree))
|
||||
die("Couldn't init repo");
|
||||
|
||||
c = lookup_commit(&r, commit_oid);
|
||||
|
||||
if (!parse_commit_in_graph(&r, c))
|
||||
die("Couldn't parse commit");
|
||||
|
||||
printf("%"PRItime, c->date);
|
||||
for (parent = c->parents; parent; parent = parent->next)
|
||||
printf(" %s", oid_to_hex(&parent->item->object.oid));
|
||||
printf("\n");
|
||||
|
||||
repo_clear(&r);
|
||||
}
|
||||
|
||||
static void test_get_commit_tree_in_graph(const char *gitdir,
|
||||
const char *worktree,
|
||||
const struct object_id *commit_oid)
|
||||
{
|
||||
struct repository r;
|
||||
struct commit *c;
|
||||
struct tree *tree;
|
||||
|
||||
setup_git_env(gitdir);
|
||||
|
||||
memset(the_repository, 0, sizeof(*the_repository));
|
||||
|
||||
/* TODO: Needed for temporary hack in hashcmp, see 183a638b7da. */
|
||||
repo_set_hash_algo(the_repository, GIT_HASH_SHA1);
|
||||
|
||||
if (repo_init(&r, gitdir, worktree))
|
||||
die("Couldn't init repo");
|
||||
|
||||
c = lookup_commit(&r, commit_oid);
|
||||
|
||||
/*
|
||||
* get_commit_tree_in_graph does not automatically parse the commit, so
|
||||
* parse it first.
|
||||
*/
|
||||
if (!parse_commit_in_graph(&r, c))
|
||||
die("Couldn't parse commit");
|
||||
tree = get_commit_tree_in_graph(&r, c);
|
||||
if (!tree)
|
||||
die("Couldn't get commit tree");
|
||||
|
||||
printf("%s\n", oid_to_hex(&tree->object.oid));
|
||||
|
||||
repo_clear(&r);
|
||||
}
|
||||
|
||||
int cmd__repository(int argc, const char **argv)
|
||||
{
|
||||
if (argc < 2)
|
||||
die("must have at least 2 arguments");
|
||||
if (!strcmp(argv[1], "parse_commit_in_graph")) {
|
||||
struct object_id oid;
|
||||
if (argc < 5)
|
||||
die("not enough arguments");
|
||||
if (parse_oid_hex(argv[4], &oid, &argv[4]))
|
||||
die("cannot parse oid '%s'", argv[4]);
|
||||
test_parse_commit_in_graph(argv[2], argv[3], &oid);
|
||||
} else if (!strcmp(argv[1], "get_commit_tree_in_graph")) {
|
||||
struct object_id oid;
|
||||
if (argc < 5)
|
||||
die("not enough arguments");
|
||||
if (parse_oid_hex(argv[4], &oid, &argv[4]))
|
||||
die("cannot parse oid '%s'", argv[4]);
|
||||
test_get_commit_tree_in_graph(argv[2], argv[3], &oid);
|
||||
} else {
|
||||
die("unrecognized '%s'", argv[1]);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue