view tests/test-merge6 @ 2076:d007df6daf8e

Create an atomic opener that does not automatically rename on close The revlog.checkinlinesize() uses an atomic opener to replace the index file after converting it from inline to traditional .i and .d files. If this operation is interrupted, the atomic file class can overwrite a valid file with a partially written one. This patch introduces an atomic opener that does not automatically replace the destination file with the tempfile. This way an interrupted checkinlinesize() call turns into a noop.
author mason@suse.com
date Tue, 04 Apr 2006 16:38:44 -0400
parents 7544700fd931
children e506c14382fd
line wrap: on
line source

#!/bin/sh

cat <<'EOF' > merge
#!/bin/sh
echo merging for `basename $1`
EOF
chmod +x merge
HGMERGE=./merge; export HGMERGE

mkdir A1
cd A1
hg init
echo This is file foo1 > foo
echo This is file bar1 > bar
hg add foo bar
hg commit -m "commit text" -d "1000000 0"

cd ..
hg clone A1 B1

cd A1
rm bar
hg remove bar
hg commit -m "commit test" -d "1000000 0"

cd ../B1
echo This is file foo22 > foo
hg commit -m "commit test" -d "1000000 0"

cd ..
hg clone A1 A2
hg clone B1 B2

cd A1
hg pull ../B1
hg update -m
hg commit -m "commit test" -d "1000000 0"
echo bar should remain deleted.
hg manifest

cd ../B2
hg pull ../A2
hg update -m
hg commit -m "commit test" -d "1000000 0"
echo bar should remain deleted.
hg manifest