提交 2b93edbf 编写于 作者: J Junio C Hamano

rerere: make sorting really stable.

The earlier code does not swap hunks when the beginning of the
first side is identical to the whole of the second side.  In
such a case, the first one should sort later.
Signed-off-by: NJunio C Hamano <junkio@cox.net>
上级 364b8523
...@@ -117,10 +117,13 @@ static int handle_file(const char *path, ...@@ -117,10 +117,13 @@ static int handle_file(const char *path,
else if (!prefixcmp(buf, "=======")) else if (!prefixcmp(buf, "======="))
hunk = 2; hunk = 2;
else if (!prefixcmp(buf, ">>>>>>> ")) { else if (!prefixcmp(buf, ">>>>>>> ")) {
int one_is_longer = (one->nr > two->nr);
int common_len = one_is_longer ? two->nr : one->nr;
int cmp = memcmp(one->ptr, two->ptr, common_len);
hunk_no++; hunk_no++;
hunk = 0; hunk = 0;
if (memcmp(one->ptr, two->ptr, one->nr < two->nr ? if ((cmp > 0) || ((cmp == 0) && one_is_longer)) {
one->nr : two->nr) > 0) {
struct buffer *swap = one; struct buffer *swap = one;
one = two; one = two;
two = swap; two = swap;
......
...@@ -35,7 +35,8 @@ git commit -q -a -m first ...@@ -35,7 +35,8 @@ git commit -q -a -m first
git checkout -b second master git checkout -b second master
git show first:a1 | git show first:a1 |
sed -e 's/To die, t/To die! T/' -e 's/life;$/life./' > a1 sed -e 's/To die, t/To die! T/' > a1
echo "* END *" >>a1
git commit -q -a -m second git commit -q -a -m second
# activate rerere # activate rerere
...@@ -53,7 +54,7 @@ test_expect_success 'no postimage or thisimage yet' \ ...@@ -53,7 +54,7 @@ test_expect_success 'no postimage or thisimage yet' \
test_expect_success 'preimage has right number of lines' ' test_expect_success 'preimage has right number of lines' '
cnt=$(sed -ne "/^<<<<<<</,/^>>>>>>>/p" $rr/preimage | wc -l) && cnt=$(sed -ne "/^<<<<<<</,/^>>>>>>>/p" $rr/preimage | wc -l) &&
test $cnt = 10 test $cnt = 9
' '
...@@ -75,10 +76,10 @@ cat > expect << EOF ...@@ -75,10 +76,10 @@ cat > expect << EOF
For in that sleep of death what dreams may come For in that sleep of death what dreams may come
When we have shuffled off this mortal coil, When we have shuffled off this mortal coil,
Must give us pause: there's the respect Must give us pause: there's the respect
That makes calamity of so long life;
-<<<<<<< -<<<<<<<
-That makes calamity of so long life.
-======= -=======
That makes calamity of so long life; -* END *
->>>>>>> ->>>>>>>
EOF EOF
git rerere diff > out git rerere diff > out
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册