[PATCH] Fix for git-rev-list --merge-order B ^A (A,B share common base) [rev 2]
This patch makes --merge-order produce the same list as git-rev-list without --merge-order specified. In particular, if the graph looks like this: A | B |/ C | D The both git-rev-list B ^A and git-rev-list --merge-order will produce B. The unit tests have been changed to reflect the fact that the prune points are now formally part of the start list that is used to perform the --merge-order sort. That is: git-rev-list --merge-order A ^D used to produce = A | C It now produces: ^ A | C Signed-off-by: Jon Seymour <jon.seymour@gmail.com> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
da4b932a0c
commit
99c2bc9300
8
epoch.c
8
epoch.c
@ -585,11 +585,9 @@ int sort_list_in_merge_order(struct commit_list *list, emitter_func emitter)
|
|||||||
for (; list; list = list->next) {
|
for (; list; list = list->next) {
|
||||||
struct commit *next = list->item;
|
struct commit *next = list->item;
|
||||||
|
|
||||||
if (!(next->object.flags & UNINTERESTING)) {
|
if (!(next->object.flags & DUPCHECK)) {
|
||||||
if (!(next->object.flags & DUPCHECK)) {
|
next->object.flags |= DUPCHECK;
|
||||||
next->object.flags |= DUPCHECK;
|
commit_list_insert(list->item, &reversed);
|
||||||
commit_list_insert(list->item, &reversed);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -367,33 +367,33 @@ test_output_expect_success "three nodes one head, one internal, one base" 'git-r
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
test_output_expect_success "linear prune l2 ^root" 'git-rev-list --merge-order --show-breaks l2 ^root' <<EOF
|
test_output_expect_success "linear prune l2 ^root" 'git-rev-list --merge-order --show-breaks l2 ^root' <<EOF
|
||||||
= l2
|
^ l2
|
||||||
| l1
|
| l1
|
||||||
| l0
|
| l0
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
test_output_expect_success "linear prune l2 ^l0" 'git-rev-list --merge-order --show-breaks l2 ^l0' <<EOF
|
test_output_expect_success "linear prune l2 ^l0" 'git-rev-list --merge-order --show-breaks l2 ^l0' <<EOF
|
||||||
= l2
|
^ l2
|
||||||
| l1
|
| l1
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
test_output_expect_success "linear prune l2 ^l1" 'git-rev-list --merge-order --show-breaks l2 ^l1' <<EOF
|
test_output_expect_success "linear prune l2 ^l1" 'git-rev-list --merge-order --show-breaks l2 ^l1' <<EOF
|
||||||
= l2
|
^ l2
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
test_output_expect_success "linear prune l5 ^a4" 'git-rev-list --merge-order --show-breaks l5 ^a4' <<EOF
|
test_output_expect_success "linear prune l5 ^a4" 'git-rev-list --merge-order --show-breaks l5 ^a4' <<EOF
|
||||||
= l5
|
^ l5
|
||||||
| l4
|
| l4
|
||||||
| l3
|
| l3
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
test_output_expect_success "linear prune l5 ^l3" 'git-rev-list --merge-order --show-breaks l5 ^l3' <<EOF
|
test_output_expect_success "linear prune l5 ^l3" 'git-rev-list --merge-order --show-breaks l5 ^l3' <<EOF
|
||||||
= l5
|
^ l5
|
||||||
| l4
|
| l4
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
test_output_expect_success "linear prune l5 ^l4" 'git-rev-list --merge-order --show-breaks l5 ^l4' <<EOF
|
test_output_expect_success "linear prune l5 ^l4" 'git-rev-list --merge-order --show-breaks l5 ^l4' <<EOF
|
||||||
= l5
|
^ l5
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
test_output_expect_success "max-count 10 - merge order" 'git-rev-list --merge-order --show-breaks --max-count=10 l5' <<EOF
|
test_output_expect_success "max-count 10 - merge order" 'git-rev-list --merge-order --show-breaks --max-count=10 l5' <<EOF
|
||||||
|
Loading…
Reference in New Issue
Block a user