Skip to content

Commit

Permalink
Make has_commit() non-static
Browse files Browse the repository at this point in the history
Move has_commit() from branch to a common location, in preparation for
using it in "git-tag". Rename it to is_descendant_of() to make it more
unique and descriptive.

Signed-off-by: Jake Goulding <goulding@vivisimo.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Jake Goulding authored and gitster committed Jan 28, 2009
1 parent 269defd commit 7fcdb36
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 17 deletions.
20 changes: 3 additions & 17 deletions builtin-branch.c
Original file line number Diff line number Diff line change
Expand Up @@ -193,21 +193,6 @@ struct ref_list {
int kinds;
};

static int has_commit(struct commit *commit, struct commit_list *with_commit)
{
if (!with_commit)
return 1;
while (with_commit) {
struct commit *other;

other = with_commit->item;
with_commit = with_commit->next;
if (in_merge_bases(other, &commit, 1))
return 1;
}
return 0;
}

static int append_ref(const char *refname, const unsigned char *sha1, int flags, void *cb_data)
{
struct ref_list *ref_list = (struct ref_list*)(cb_data);
Expand All @@ -231,7 +216,7 @@ static int append_ref(const char *refname, const unsigned char *sha1, int flags,
return error("branch '%s' does not point at a commit", refname);

/* Filter with with_commit if specified */
if (!has_commit(commit, ref_list->with_commit))
if (!is_descendant_of(commit, ref_list->with_commit))
return 0;

/* Don't add types the caller doesn't want */
Expand Down Expand Up @@ -401,7 +386,8 @@ static void print_ref_list(int kinds, int detached, int verbose, int abbrev, str
qsort(ref_list.list, ref_list.index, sizeof(struct ref_item), ref_cmp);

detached = (detached && (kinds & REF_LOCAL_BRANCH));
if (detached && head_commit && has_commit(head_commit, with_commit)) {
if (detached && head_commit &&
is_descendant_of(head_commit, with_commit)) {
struct ref_item item;
item.name = xstrdup("(no branch)");
item.kind = REF_LOCAL_BRANCH;
Expand Down
15 changes: 15 additions & 0 deletions commit.c
Original file line number Diff line number Diff line change
Expand Up @@ -705,6 +705,21 @@ struct commit_list *get_merge_bases(struct commit *one, struct commit *two,
return get_merge_bases_many(one, 1, &two, cleanup);
}

int is_descendant_of(struct commit *commit, struct commit_list *with_commit)
{
if (!with_commit)
return 1;
while (with_commit) {
struct commit *other;

other = with_commit->item;
with_commit = with_commit->next;
if (in_merge_bases(other, &commit, 1))
return 1;
}
return 0;
}

int in_merge_bases(struct commit *commit, struct commit **reference, int num)
{
struct commit_list *bases, *b;
Expand Down
1 change: 1 addition & 0 deletions commit.h
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,7 @@ extern int is_repository_shallow(void);
extern struct commit_list *get_shallow_commits(struct object_array *heads,
int depth, int shallow_flag, int not_shallow_flag);

int is_descendant_of(struct commit *, struct commit_list *);
int in_merge_bases(struct commit *, struct commit **, int);

extern int interactive_add(int argc, const char **argv, const char *prefix);
Expand Down

0 comments on commit 7fcdb36

Please sign in to comment.