Skip to content

Commit

Permalink
Merge branch 'kb/ancestry-path-threedots' into maint
Browse files Browse the repository at this point in the history
* kb/ancestry-path-threedots:
  revision.c: treat A...B merge bases as if manually specified
  t6019: demonstrate --ancestry-path A...B breakage
  • Loading branch information
Junio C Hamano committed Jun 27, 2013
2 parents 7f3447c + a765499 commit 81de16a
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 1 deletion.
17 changes: 17 additions & 0 deletions revision.c
Original file line number Diff line number Diff line change
Expand Up @@ -915,6 +915,19 @@ static void add_rev_cmdline(struct rev_info *revs,
info->nr++;
}

static void add_rev_cmdline_list(struct rev_info *revs,
struct commit_list *commit_list,
int whence,
unsigned flags)
{
while (commit_list) {
struct object *object = &commit_list->item->object;
add_rev_cmdline(revs, object, sha1_to_hex(object->sha1),
whence, flags);
commit_list = commit_list->next;
}
}

struct all_refs_cb {
int all_flags;
int warned_bad_reflog;
Expand Down Expand Up @@ -1092,6 +1105,7 @@ static void prepare_show_merge(struct rev_info *revs)
add_pending_object(revs, &head->object, "HEAD");
add_pending_object(revs, &other->object, "MERGE_HEAD");
bases = get_merge_bases(head, other, 1);
add_rev_cmdline_list(revs, bases, REV_CMD_MERGE_BASE, UNINTERESTING);
add_pending_commit_list(revs, bases, UNINTERESTING);
free_commit_list(bases);
head->object.flags |= SYMMETRIC_LEFT;
Expand Down Expand Up @@ -1179,6 +1193,9 @@ int handle_revision_arg(const char *arg_, struct rev_info *revs, int flags, unsi

if (symmetric) {
exclude = get_merge_bases(a, b, 1);
add_rev_cmdline_list(revs, exclude,
REV_CMD_MERGE_BASE,
flags_exclude);
add_pending_commit_list(revs, exclude,
flags_exclude);
free_commit_list(exclude);
Expand Down
1 change: 1 addition & 0 deletions revision.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ struct rev_cmdline_info {
REV_CMD_PARENTS_ONLY,
REV_CMD_LEFT,
REV_CMD_RIGHT,
REV_CMD_MERGE_BASE,
REV_CMD_REV
} whence;
unsigned flags;
Expand Down
21 changes: 20 additions & 1 deletion t/t6019-rev-list-ancestry-path.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ test_description='--ancestry-path'
#
# D..M -- M.t == M
# --ancestry-path D..M -- M.t == M
#
# F...I == F G H I
# --ancestry-path F...I == F H I

. ./test-lib.sh

Expand Down Expand Up @@ -63,13 +66,29 @@ test_expect_success 'rev-list D..M -- M.t' '
test_cmp expect actual
'

test_expect_success 'rev-list --ancestry-patch D..M -- M.t' '
test_expect_success 'rev-list --ancestry-path D..M -- M.t' '
echo M >expect &&
git rev-list --ancestry-path --format=%s D..M -- M.t |
sed -e "/^commit /d" >actual &&
test_cmp expect actual
'

test_expect_success 'rev-list F...I' '
for c in F G H I; do echo $c; done >expect &&
git rev-list --format=%s F...I |
sed -e "/^commit /d" |
sort >actual &&
test_cmp expect actual
'

test_expect_success 'rev-list --ancestry-path F...I' '
for c in F H I; do echo $c; done >expect &&
git rev-list --ancestry-path --format=%s F...I |
sed -e "/^commit /d" |
sort >actual &&
test_cmp expect actual
'

# b---bc
# / \ /
# a X
Expand Down

0 comments on commit 81de16a

Please sign in to comment.