#!/bin/sh
#
# Copyright (c) 2006 Johannes E. Schindelin
#

test_description='git rerere
'

. ./test-lib.sh

cat > a1 << EOF
Some title
==========
Whether 'tis nobler in the mind to suffer
The slings and arrows of outrageous fortune,
Or to take arms against a sea of troubles,
And by opposing end them? To die: to sleep;
No more; and by a sleep to say we end
The heart-ache and the thousand natural shocks
That flesh is heir to, 'tis a consummation
Devoutly to be wish'd.
EOF

git add a1
git commit -q -a -m initial

git checkout -b first
cat >> a1 << EOF
Some title
==========
To die, to sleep;
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;
EOF
git commit -q -a -m first

git checkout -b second master
git show first:a1 |
sed -e 's/To die, t/To die! T/' -e 's/Some title/Some Title/' > a1
echo "* END *" >>a1
git commit -q -a -m second

test_expect_success 'nothing recorded without rerere' '
	(rm -rf .git/rr-cache; git config rerere.enabled false) &&
	test_must_fail git merge first &&
	! test -d .git/rr-cache
'

# activate rerere, old style
test_expect_success 'conflicting merge' '
	git reset --hard &&
	mkdir .git/rr-cache &&
	git config --unset rerere.enabled &&
	test_must_fail git merge first
'

sha1=$(perl -pe 's/	.*//' .git/MERGE_RR)
rr=.git/rr-cache/$sha1
test_expect_success 'recorded preimage' "grep ^=======$ $rr/preimage"

test_expect_success 'rerere.enabled works, too' '
	rm -rf .git/rr-cache &&
	git config rerere.enabled true &&
	git reset --hard &&
	test_must_fail git merge first &&
	grep ^=======$ $rr/preimage
'

test_expect_success 'no postimage or thisimage yet' \
	"test ! -f $rr/postimage -a ! -f $rr/thisimage"

test_expect_success 'preimage has right number of lines' '

	cnt=$(sed -ne "/^<<<<<<</,/^>>>>>>>/p" $rr/preimage | wc -l) &&
	test $cnt = 13

'

git show first:a1 > a1

cat > expect << EOF
--- a/a1
+++ b/a1
@@ -1,4 +1,4 @@
-Some Title
+Some title
 ==========
 Whether 'tis nobler in the mind to suffer
 The slings and arrows of outrageous fortune,
@@ -8,21 +8,11 @@
 The heart-ache and the thousand natural shocks
 That flesh is heir to, 'tis a consummation
 Devoutly to be wish'd.
-<<<<<<<
-Some Title
-==========
-To die! To sleep;
-=======
 Some title
 ==========
 To die, to sleep;
->>>>>>>
 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;
-<<<<<<<
-=======
-* END *
->>>>>>>
EOF
git rerere diff > out

test_expect_success 'rerere diff' 'test_cmp expect out'

cat > expect << EOF
a1
EOF

git rerere status > out

test_expect_success 'rerere status' 'test_cmp expect out'

test_expect_success 'commit succeeds' \
	"git commit -q -a -m 'prefer first over second'"

test_expect_success 'recorded postimage' "test -f $rr/postimage"

test_expect_success 'another conflicting merge' '
	git checkout -b third master &&
	git show second^:a1 | sed "s/To die: t/To die! T/" > a1 &&
	git commit -q -a -m third &&
	test_must_fail git pull . first
'

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' 'test_cmp a1 expect'

rm $rr/postimage
echo "$sha1	a1" | perl -pe 'y/\012/\000/' > .git/MERGE_RR

test_expect_success 'rerere clear' 'git rerere clear'

test_expect_success 'clear removed the directory' "test ! -d $rr"

mkdir $rr
echo Hello > $rr/preimage
echo World > $rr/postimage

sha2=4000000000000000000000000000000000000000
rr2=.git/rr-cache/$sha2
mkdir $rr2
echo Hello > $rr2/preimage

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))

test-chmtime =$almost_60_days_ago $rr/preimage
test-chmtime =$almost_15_days_ago $rr2/preimage

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-chmtime =$just_over_60_days_ago $rr/preimage
test-chmtime =$just_over_15_days_ago $rr2/preimage

test_expect_success 'garbage collection (part2)' 'git rerere gc'

test_expect_success 'old records rest in peace' \
	"test ! -f $rr/preimage && test ! -f $rr2/preimage"

test_expect_success 'file2 added differently in two branches' '
	git reset --hard &&
	git checkout -b fourth &&
	echo Hallo > file2 &&
	git add file2 &&
	git commit -m version1 &&
	git checkout third &&
	echo Bello > file2 &&
	git add file2 &&
	git commit -m version2 &&
	test_must_fail git merge fourth &&
	echo Cello > file2 &&
	git add file2 &&
	git commit -m resolution
'

test_expect_success 'resolution was recorded properly' '
	git reset --hard HEAD~2 &&
	git checkout -b fifth &&
	echo Hallo > file3 &&
	git add file3 &&
	git commit -m version1 &&
	git checkout third &&
	echo Bello > file3 &&
	git add file3 &&
	git commit -m version2 &&
	git tag version2 &&
	test_must_fail git merge fifth &&
	test Cello = "$(cat file3)" &&
	test 0 != $(git ls-files -u | wc -l)
'

test_expect_success 'rerere.autoupdate' '
	git config rerere.autoupdate true
	git reset --hard &&
	git checkout version2 &&
	test_must_fail git merge fifth &&
	test 0 = $(git ls-files -u | wc -l)

'

test_done
