#include "commit-reach.h"
#include "config.h"
#include "parse-options.h"
+#include "ref-filter.h"
#include "string-list.h"
#include "tag.h"
{
struct object_id oid_A, oid_B;
struct commit *A, *B;
- struct commit_list *X;
+ struct commit_list *X, *Y;
struct commit **X_array;
int X_nr, X_alloc;
struct strbuf buf = STRBUF_INIT;
exit(1);
A = B = NULL;
- X = NULL;
+ X = Y = NULL;
X_nr = 0;
X_alloc = 16;
ALLOC_ARRAY(X_array, X_alloc);
X_array[X_nr++] = c;
break;
+ case 'Y':
+ commit_list_insert(c, &Y);
+ break;
+
default:
die("unexpected start of line: %c", buf.buf[0]);
}
struct commit_list *list = reduce_heads(X);
printf("%s(X):\n", av[1]);
print_sorted_commit_ids(list);
+ } else if (!strcmp(av[1], "can_all_from_reach")) {
+ printf("%s(X,Y):%d\n", av[1], can_all_from_reach(X, Y, 1));
+ } else if (!strcmp(av[1], "commit_contains")) {
+ struct ref_filter filter;
+ struct contains_cache cache;
+ init_contains_cache(&cache);
+
+ if (ac > 2 && !strcmp(av[2], "--tag"))
+ filter.with_commit_tag_algo = 1;
+ else
+ filter.with_commit_tag_algo = 0;
+
+ printf("%s(_,A,X,_):%d\n", av[1], commit_contains(&filter, A, X, &cache));
}
exit(0);