tests/test-issue322
author Alexis S. L. Carvalho <alexis@cecm.usp.br>
Sat, 14 Oct 2006 18:47:48 -0300
changeset 3390 a74addddd092
parent 2953 3d5547845158
child 3988 9dcf9d45cab8
permissions -rwxr-xr-x
make revlog.addgroup pass its file handles to addrevision This should fix issue255. It looks like the problem there happens when addgroup calls addrevision to add a full revision, and addrevision decides to split the index file into a .i/.d pair. Since addgroup has an open file handle for the index file, the renaming of the new .i file to its final name fails on windows.

#!/bin/sh
# http://www.selenic.com/mercurial/bts/issue322

echo % file replaced with directory

hg init a
cd a       
echo a > a 
hg commit -Ama 
rm a       
mkdir a    
echo a > a/a

echo % should fail - would corrupt dirstate
hg add a/a

cd ..      

echo % directory replaced with file

hg init c
cd c
mkdir a
echo a > a/a
hg commit -Ama

rm -rf a
echo a > a

echo % should fail - would corrupt dirstate
hg add a

cd ..

echo % directory replaced with file

hg init d
cd d
mkdir b
mkdir b/c
echo a > b/c/d
hg commit -Ama
rm -rf b
echo a > b

echo % should fail - would corrupt dirstate
hg add b

exit 0