git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
blob 149e8f32cce158e34c21d5c8bab16c242ebc6d9d 1573 bytes (raw)
name: t/helper/test-reach.c 	 # note: path name is non-authoritative(*)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
 
#include "test-tool.h"
#include "cache.h"
#include "commit-reach.h"
#include "config.h"
#include "parse-options.h"
#include "tag.h"

int cmd__reach(int ac, const char **av)
{
	struct object_id oid_A, oid_B;
	struct commit *A, *B;
	struct commit_list *X;
	struct strbuf buf = STRBUF_INIT;
	struct repository *r = the_repository;

	setup_git_directory();

	if (ac < 2)
		exit(1);

	A = B = NULL;
	X = NULL;

	while (strbuf_getline(&buf, stdin) != EOF) {
		struct object_id oid;
		struct object *o;
		struct commit *c;
		if (buf.len < 3)
			continue;

		if (get_oid_committish(buf.buf + 2, &oid))
			die("failed to resolve %s", buf.buf + 2);

		o = parse_object(r, &oid);
		o = deref_tag_noverify(o);

		if (!o)
			die("failed to load commit for input %s resulting in oid %s\n",
			    buf.buf, oid_to_hex(&oid));

		c = object_as_type(r, o, OBJ_COMMIT, 0);

		if (!c)
			die("failed to load commit for input %s resulting in oid %s\n",
			    buf.buf, oid_to_hex(&oid));

		switch (buf.buf[0]) {
			case 'A':
				oidcpy(&oid_A, &oid);
				A = c;
				break;

			case 'B':
				oidcpy(&oid_B, &oid);
				B = c;
				break;

			case 'X':
				commit_list_insert(c, &X);
				break;

			default:
				die("unexpected start of line: %c", buf.buf[0]);
		}
	}
	strbuf_release(&buf);

	if (!strcmp(av[1], "ref_newer"))
		printf("%s:%d\n", av[1], ref_newer(&oid_A, &oid_B));
	else if (!strcmp(av[1], "in_merge_bases"))
		printf("%s(A,B):%d\n", av[1], in_merge_bases(A, B));
	else if (!strcmp(av[1], "is_descendant_of"))
		printf("%s(A,X):%d\n", av[1], is_descendant_of(A, X));

	exit(0);
}

debug log:

solving 149e8f32c ...
found 149e8f32c in https://public-inbox.org/git/074a9e04c980fabf73d0d042f96fc2c13429f9b5.1531746011.git.gitgitgadget@gmail.com/
found 29104d41a in https://public-inbox.org/git/dbe75e7d2192a493825ef34fecfecbc021e3d4fb.1531746011.git.gitgitgadget@gmail.com/
found 8cc570f3b in https://public-inbox.org/git/6acc5e804ea7beabc7c813e4c1c067915a16087b.1531746011.git.gitgitgadget@gmail.com/

applying [1/3] https://public-inbox.org/git/6acc5e804ea7beabc7c813e4c1c067915a16087b.1531746011.git.gitgitgadget@gmail.com/
diff --git a/t/helper/test-reach.c b/t/helper/test-reach.c
new file mode 100644
index 000000000..8cc570f3b


applying [2/3] https://public-inbox.org/git/dbe75e7d2192a493825ef34fecfecbc021e3d4fb.1531746011.git.gitgitgadget@gmail.com/
diff --git a/t/helper/test-reach.c b/t/helper/test-reach.c
index 8cc570f3b..29104d41a 100644


applying [3/3] https://public-inbox.org/git/074a9e04c980fabf73d0d042f96fc2c13429f9b5.1531746011.git.gitgitgadget@gmail.com/
diff --git a/t/helper/test-reach.c b/t/helper/test-reach.c
index 29104d41a..149e8f32c 100644

Checking patch t/helper/test-reach.c...
Applied patch t/helper/test-reach.c cleanly.
Checking patch t/helper/test-reach.c...
Applied patch t/helper/test-reach.c cleanly.
Checking patch t/helper/test-reach.c...
Applied patch t/helper/test-reach.c cleanly.

index at:
100644 149e8f32cce158e34c21d5c8bab16c242ebc6d9d	t/helper/test-reach.c

(*) Git path names are given by the tree(s) the blob belongs to.
    Blobs themselves have no identifier aside from the hash of its contents.^

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).