From eb3359663d62f35999330797455dbe738bd5ed99 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 3 Apr 2007 16:28:46 -0700 Subject: rerere should not repeat the earlier hunks in later ones When a file has more then one conflicting hunks, it repeated the contents of previous hunks in output for later ones. Signed-off-by: Junio C Hamano diff --git a/builtin-rerere.c b/builtin-rerere.c index 58c5fed..004eda2 100644 --- a/builtin-rerere.c +++ b/builtin-rerere.c @@ -78,6 +78,13 @@ static void append_line(struct buffer *buffer, const char *line) buffer->nr += len; } +static void clear_buffer(struct buffer *buffer) +{ + free(buffer->ptr); + buffer->ptr = NULL; + buffer->nr = buffer->alloc = 0; +} + static int handle_file(const char *path, unsigned char *sha1, const char *output) { @@ -131,6 +138,8 @@ static int handle_file(const char *path, SHA1_Update(&ctx, two->ptr, two->nr); SHA1_Update(&ctx, "\0", 1); } + clear_buffer(one); + clear_buffer(two); } else if (hunk == 1) append_line(one, buf); else if (hunk == 2) diff --git a/t/t4200-rerere.sh b/t/t4200-rerere.sh index c571a1b..69b8d26 100755 --- a/t/t4200-rerere.sh +++ b/t/t4200-rerere.sh @@ -34,7 +34,8 @@ EOF git commit -q -a -m first git checkout -b second master -git show first:a1 | sed 's/To die, t/To die! T/' > a1 +git show first:a1 | +sed -e 's/To die, t/To die! T/' -e 's/life;$/life./' > a1 git commit -q -a -m second # activate rerere @@ -42,19 +43,26 @@ mkdir .git/rr-cache test_expect_failure 'conflicting merge' 'git pull . first' -sha1=4f58849a60b4f969a2848966b6d02893b783e8fb +sha1=$(sed -e 's/\t.*//' .git/rr-cache/MERGE_RR) rr=.git/rr-cache/$sha1 test_expect_success 'recorded preimage' "grep ======= $rr/preimage" test_expect_success 'no postimage or thisimage yet' \ "test ! -f $rr/postimage -a ! -f $rr/thisimage" +test_expect_success 'preimage have right number of lines' ' + + cnt=$(sed -ne "/^<<<<<<>>>>>>/p" $rr/preimage | wc -l) && + test "$cnt" = 10 + +' + git show first:a1 > a1 cat > expect << EOF --- a/a1 +++ b/a1 -@@ -6,11 +6,7 @@ +@@ -6,17 +6,9 @@ The heart-ache and the thousand natural shocks That flesh is heir to, 'tis a consummation Devoutly to be wish'd. @@ -66,8 +74,13 @@ cat > expect << EOF To sleep: perchance to dream: ay, there's the rub; For in that sleep of death what dreams may come When we have shuffled off this mortal coil, + Must give us pause: there's the respect +-<<<<<<< +-That makes calamity of so long life. +-======= + That makes calamity of so long life; +->>>>>>> EOF - git rerere diff > out test_expect_success 'rerere diff' 'diff -u expect out' -- cgit v0.10.2-6-g49f6 From 9694ec4533b30c1299e9ce7742c65c78b4fa3c5d Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Tue, 3 Apr 2007 11:31:21 -0700 Subject: GIT 1.5.0.7 Not that this release really matters, as we will be doing 1.5.1 tomorrow. This commit is to tie the loose ends and merge all of "maint" branch into "master" in preparation. Signed-off-by: Junio C Hamano diff --git a/Documentation/RelNotes-1.5.0.7.txt b/Documentation/RelNotes-1.5.0.7.txt new file mode 100644 index 0000000..670ad32 --- /dev/null +++ b/Documentation/RelNotes-1.5.0.7.txt @@ -0,0 +1,18 @@ +GIT v1.5.0.7 Release Notes +========================== + +Fixes since v1.5.0.6 +-------------------- + +* Bugfixes + + - git-upload-pack failed to close unused pipe ends, resulting + in many zombies to hang around. + + - git-rerere was recording the contents of earlier hunks + duplicated in later hunks. This prevented resolving the same + conflict when performing the same merge the other way around. + +* Documentation + + - a few documentation fixes from Debian package maintainer. diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN index 6abd4cf..7213309 100755 --- a/GIT-VERSION-GEN +++ b/GIT-VERSION-GEN @@ -1,7 +1,7 @@ #!/bin/sh GVF=GIT-VERSION-FILE -DEF_VER=v1.5.0.6.GIT +DEF_VER=v1.5.0.7.GIT LF=' ' diff --git a/RelNotes b/RelNotes index 4e145f3..1126dfe 120000 --- a/RelNotes +++ b/RelNotes @@ -1 +1 @@ -Documentation/RelNotes-1.5.0.6.txt \ No newline at end of file +Documentation/RelNotes-1.5.0.7.txt \ No newline at end of file -- cgit v0.10.2-6-g49f6