#!/bin/sh

hg init a

cd a
echo a > a
hg ci -Ama -d '1 0'

hg cp a b
hg ci -mb -d '2 0'

mkdir dir
hg mv b dir
hg ci -mc -d '3 0'

hg mv a b
echo a > d
hg add d
hg ci -md -d '4 0'

hg mv dir/b e
hg ci -me -d '5 0'

hg log a
echo % -f, directory
hg log -f dir
echo % -f, but no args
hg log -f
echo % one rename
hg log -vf a
echo % many renames
hg log -vf e

echo % log copies
hg log -vC --template '{rev} {file_copies%filecopy}\n'

echo % log copies, non-linear manifest
hg up -C 3
hg mv dir/b e
echo foo > foo
hg ci -Ame2 -d '6 0'
hg log -vC --template '{rev} {file_copies%filecopy}\n' -r 5

echo % log copies, execute bit set
chmod +x e
hg ci -me3 -d '7 0'
hg log -vC --template '{rev} {file_copies%filecopy}\n' -r 6

echo '% log -p d'
hg log -pv d

# log --follow tests
hg init ../follow
cd ../follow

echo base > base
hg ci -Ambase -d '1 0'

echo r1 >> base
hg ci -Amr1 -d '1 0'
echo r2 >> base
hg ci -Amr2 -d '1 0'

hg up -C 1
echo b1 > b1
hg ci -Amb1 -d '1 0'

echo % log -f
hg log -f

hg up -C 0
echo b2 > b2
hg ci -Amb2 -d '1 0'

echo % log -f -r 1:tip
hg log -f -r 1:tip

hg up -C 3
hg merge tip

echo % log -r .  with two parents
hg log -r .

hg ci -mm12 -d '1 0'

echo % log -r .  with one parent
hg log -r .

echo postm >> b1
hg ci -Amb1.1 -d'1 0'

echo % log --follow-first
hg log --follow-first

echo % log -P 2
hg log -P 2

echo '% log -r tip -p --git'
hg log -r tip -p --git

echo '% log -r ""'
hg log -r ''

echo '% log -r <some unknown node id>'
hg log -r 1000000000000000000000000000000000000000

echo '% log -k r1'
hg log -k r1

echo '% log -d -1'
hg log -d -1

cd ..

hg init usertest
cd usertest

echo a > a
hg ci -A -m "a" -u "User One <user1@example.org>"
echo b > b
hg ci -A -m "b" -u "User Two <user2@example.org>"

hg log -u "User One <user1@example.org>"
hg log -u "user1" -u "user2"
hg log -u "user3"

exit 0
