From: Junio C Hamano Date: Wed, 4 Apr 2007 04:52:14 +0000 (-0700) Subject: Merge 1.5.0.7 in X-Git-Tag: v1.5.1~1 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=045f5759c97746589a067461e50fad16f60711ac;hp=-c;p=git.git Merge 1.5.0.7 in Signed-off-by: Junio C Hamano --- 045f5759c97746589a067461e50fad16f60711ac diff --combined builtin-rerere.c index b8867ab4a,004eda2ac..b463c07f0 --- a/builtin-rerere.c +++ b/builtin-rerere.c @@@ -78,6 -78,13 +78,13 @@@ static void append_line(struct buffer * 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) { @@@ -105,11 -112,11 +112,11 @@@ SHA1_Init(&ctx); while (fgets(buf, sizeof(buf), f)) { - if (!strncmp("<<<<<<< ", buf, 8)) + if (!prefixcmp(buf, "<<<<<<< ")) hunk = 1; - else if (!strncmp("=======", buf, 7)) + else if (!prefixcmp(buf, "=======")) hunk = 2; - else if (!strncmp(">>>>>>> ", buf, 8)) { + else if (!prefixcmp(buf, ">>>>>>> ")) { hunk_no++; hunk = 0; if (memcmp(one->ptr, two->ptr, one->nr < two->nr ? @@@ -131,6 -138,8 +138,8 @@@ 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 --combined t/t4200-rerere.sh index e081b32af,69b8d26cd..8b611bbea --- a/t/t4200-rerere.sh +++ b/t/t4200-rerere.sh @@@ -34,7 -34,8 +34,8 @@@ EO 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 +43,26 @@@ mkdir .git/rr-cach 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,11 -74,16 +74,16 @@@ 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' +test_expect_success 'rerere diff' 'git diff expect out' cat > expect << EOF a1 @@@ -78,7 -91,7 +91,7 @@@ EO git rerere status > out -test_expect_success 'rerere status' 'diff -u expect out' +test_expect_success 'rerere status' 'git diff expect out' test_expect_success 'commit succeeds' \ "git commit -q -a -m 'prefer first over second'" @@@ -94,7 -107,7 +107,7 @@@ test_expect_failure 'another conflictin git show first:a1 | sed 's/To die: t/To die! T/' > expect test_expect_success 'rerere kicked in' "! grep ======= a1" -test_expect_success 'rerere prefers first change' 'diff -u a1 expect' +test_expect_success 'rerere prefers first change' 'git diff a1 expect' rm $rr/postimage echo "$sha1 a1" | tr '\012' '\0' > .git/rr-cache/MERGE_RR @@@ -112,26 -125,39 +125,26 @@@ rr2=.git/rr-cache/$sha mkdir $rr2 echo Hello > $rr2/preimage -case "$(date -d @11111111 +%s 2>/dev/null)" in -11111111) - # 'date' must be able to take arbitrary input with @11111111 notation. - # for this test to succeed. We should fix this part using more - # portable script someday. +almost_15_days_ago=$((60-15*86400)) +just_over_15_days_ago=$((-1-15*86400)) +almost_60_days_ago=$((60-60*86400)) +just_over_60_days_ago=$((-1-60*86400)) - now=$(date +%s) - almost_15_days_ago=$(($now+60-15*86400)) - just_over_15_days_ago=$(($now-1-15*86400)) - almost_60_days_ago=$(($now+60-60*86400)) - just_over_60_days_ago=$(($now-1-60*86400)) - predate1="$(date -d "@$almost_60_days_ago" +%Y%m%d%H%M.%S)" - predate2="$(date -d "@$almost_15_days_ago" +%Y%m%d%H%M.%S)" - postdate1="$(date -d "@$just_over_60_days_ago" +%Y%m%d%H%M.%S)" - postdate2="$(date -d "@$just_over_15_days_ago" +%Y%m%d%H%M.%S)" +test-chmtime =$almost_60_days_ago $rr/preimage +test-chmtime =$almost_15_days_ago $rr2/preimage - touch -m -t "$predate1" $rr/preimage - touch -m -t "$predate2" $rr2/preimage +test_expect_success 'garbage collection (part1)' 'git rerere gc' - test_expect_success 'garbage collection (part1)' 'git rerere gc' +test_expect_success 'young records still live' \ + "test -f $rr/preimage && test -f $rr2/preimage" - test_expect_success 'young records still live' \ - "test -f $rr/preimage -a -f $rr2/preimage" +test-chmtime =$just_over_60_days_ago $rr/preimage +test-chmtime =$just_over_15_days_ago $rr2/preimage - touch -m -t "$postdate1" $rr/preimage - touch -m -t "$postdate2" $rr2/preimage +test_expect_success 'garbage collection (part2)' 'git rerere gc' - test_expect_success 'garbage collection (part2)' 'git rerere gc' - - test_expect_success 'old records rest in peace' \ - "test ! -f $rr/preimage -a ! -f $rr2/preimage" - ;; -esac +test_expect_success 'old records rest in peace' \ + "test ! -f $rr/preimage && test ! -f $rr2/preimage" test_done