summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 71dfbf2)
raw | patch | inline | side by side (parent: 71dfbf2)
author | Junio C Hamano <junkio@cox.net> | |
Tue, 9 Jan 2007 07:22:31 +0000 (23:22 -0800) | ||
committer | Junio C Hamano <junkio@cox.net> | |
Wed, 10 Jan 2007 01:57:03 +0000 (17:57 -0800) |
The internal function in_merge_bases(A, B) is used to make sure
that commit A is an ancestor of commit B. This changes the
signature of it to take an array of B's and updates its current
callers.
Signed-off-by: Junio C Hamano <junkio@cox.net>
that commit A is an ancestor of commit B. This changes the
signature of it to take an array of B's and updates its current
callers.
Signed-off-by: Junio C Hamano <junkio@cox.net>
builtin-branch.c | patch | blob | history | |
builtin-reflog.c | patch | blob | history | |
commit.c | patch | blob | history | |
commit.h | patch | blob | history |
diff --git a/builtin-branch.c b/builtin-branch.c
index d3df5a57f127f44d7ff48a419d51ca108c7c9618..020ed6be7be2b3f10dde4b96d12ea2846b6c14b7 100644 (file)
--- a/builtin-branch.c
+++ b/builtin-branch.c
*/
if (!force &&
- !in_merge_bases(rev, head_rev)) {
+ !in_merge_bases(rev, &head_rev, 1)) {
error("The branch '%s' is not a strict subset of "
"your current HEAD.\n"
"If you are sure you want to delete it, "
diff --git a/builtin-reflog.c b/builtin-reflog.c
index a967117661c4cf888f992a198955d542f9182f21..fb37984ae6d60915cab112b6b73a35c23db22221 100644 (file)
--- a/builtin-reflog.c
+++ b/builtin-reflog.c
if ((timestamp < cb->cmd->expire_unreachable) &&
(!cb->ref_commit ||
- (old && !in_merge_bases(old, cb->ref_commit)) ||
- (new && !in_merge_bases(new, cb->ref_commit))))
+ (old && !in_merge_bases(old, &cb->ref_commit, 1)) ||
+ (new && !in_merge_bases(new, &cb->ref_commit, 1))))
goto prune;
if (cb->newlog)
diff --git a/commit.c b/commit.c
index 496d37aa020871aed111002c2be0380366a70baa..aa14c5adb02e6720bfc03f1c84977078f4c16f15 100644 (file)
--- a/commit.c
+++ b/commit.c
return result;
}
-int in_merge_bases(struct commit *rev1, struct commit *rev2)
+int in_merge_bases(struct commit *commit, struct commit **reference, int num)
{
struct commit_list *bases, *b;
int ret = 0;
- bases = get_merge_bases(rev1, rev2, 1);
+ if (num == 1)
+ bases = get_merge_bases(commit, *reference, 1);
+ else
+ die("not yet");
for (b = bases; b; b = b->next) {
- if (!hashcmp(rev1->object.sha1, b->item->object.sha1)) {
+ if (!hashcmp(commit->object.sha1, b->item->object.sha1)) {
ret = 1;
break;
}
diff --git a/commit.h b/commit.h
index 936f8fce301672b5b78352a217403cc319ab3f07..b8e6e18a806bd40c3dc58b0e5c32c5dd6acdce69 100644 (file)
--- a/commit.h
+++ b/commit.h
extern struct commit_list *get_shallow_commits(struct object_array *heads,
int depth, int shallow_flag, int not_shallow_flag);
-int in_merge_bases(struct commit *rev1, struct commit *rev2);
+int in_merge_bases(struct commit *, struct commit **, int);
#endif /* COMMIT_H */