4 #include "commit-reach.h"
6 #include "parse-options.h"
9 int cmd__reach(int ac
, const char **av
)
11 struct object_id oid_A
, oid_B
;
13 struct commit_list
*X
;
14 struct strbuf buf
= STRBUF_INIT
;
15 struct repository
*r
= the_repository
;
17 setup_git_directory();
25 while (strbuf_getline(&buf
, stdin
) != EOF
) {
32 if (get_oid_committish(buf
.buf
+ 2, &oid
))
33 die("failed to resolve %s", buf
.buf
+ 2);
35 o
= parse_object(r
, &oid
);
36 o
= deref_tag_noverify(o
);
39 die("failed to load commit for input %s resulting in oid %s\n",
40 buf
.buf
, oid_to_hex(&oid
));
42 c
= object_as_type(r
, o
, OBJ_COMMIT
, 0);
45 die("failed to load commit for input %s resulting in oid %s\n",
46 buf
.buf
, oid_to_hex(&oid
));
60 commit_list_insert(c
, &X
);
64 die("unexpected start of line: %c", buf
.buf
[0]);
69 if (!strcmp(av
[1], "ref_newer"))
70 printf("%s(A,B):%d\n", av
[1], ref_newer(&oid_A
, &oid_B
));
71 else if (!strcmp(av
[1], "in_merge_bases"))
72 printf("%s(A,B):%d\n", av
[1], in_merge_bases(A
, B
));
73 else if (!strcmp(av
[1], "is_descendant_of"))
74 printf("%s(A,X):%d\n", av
[1], is_descendant_of(A
, X
));