Skip to content

Commit

Permalink
Move in_merge_bases() to commit.c
Browse files Browse the repository at this point in the history
This reasonably useful function was hidden inside builtin-branch.c
  • Loading branch information
Junio C Hamano committed Dec 21, 2006
1 parent e29cb53 commit 2ecd2bb
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 20 deletions.
21 changes: 1 addition & 20 deletions builtin-branch.c
Original file line number Diff line number Diff line change
Expand Up @@ -74,25 +74,6 @@ const char *branch_get_color(enum color_branch ix)
return "";
}

static int in_merge_bases(const unsigned char *sha1,
struct commit *rev1,
struct commit *rev2)
{
struct commit_list *bases, *b;
int ret = 0;

bases = get_merge_bases(rev1, rev2, 1);
for (b = bases; b; b = b->next) {
if (!hashcmp(sha1, b->item->object.sha1)) {
ret = 1;
break;
}
}

free_commit_list(bases);
return ret;
}

static int delete_branches(int argc, const char **argv, int force, int kinds)
{
struct commit *rev, *head_rev = head_rev;
Expand Down Expand Up @@ -153,7 +134,7 @@ static int delete_branches(int argc, const char **argv, int force, int kinds)
*/

if (!force &&
!in_merge_bases(sha1, rev, head_rev)) {
!in_merge_bases(rev, head_rev)) {
error("The branch '%s' is not a strict subset of "
"your current HEAD.\n"
"If you are sure you want to delete it, "
Expand Down
17 changes: 17 additions & 0 deletions commit.c
Original file line number Diff line number Diff line change
Expand Up @@ -1009,3 +1009,20 @@ struct commit_list *get_merge_bases(struct commit *one,
free(rslt);
return result;
}

int in_merge_bases(struct commit *rev1, struct commit *rev2)
{
struct commit_list *bases, *b;
int ret = 0;

bases = get_merge_bases(rev1, rev2, 1);
for (b = bases; b; b = b->next) {
if (!hashcmp(rev1->object.sha1, b->item->object.sha1)) {
ret = 1;
break;
}
}

free_commit_list(bases);
return ret;
}
1 change: 1 addition & 0 deletions commit.h
Original file line number Diff line number Diff line change
Expand Up @@ -107,4 +107,5 @@ int read_graft_file(const char *graft_file);

extern struct commit_list *get_merge_bases(struct commit *rev1, struct commit *rev2, int cleanup);

int in_merge_bases(struct commit *rev1, struct commit *rev2);
#endif /* COMMIT_H */

0 comments on commit 2ecd2bb

Please sign in to comment.