Fixing
issue1542, adding a relevant test
inotify is smart enough to notify you about any changes in a
directory, even if you only watch the directory, and none if its
contents: the recursive add_watch I added was unnecessary.
The only thing that matters here is the recursive status update on
directory deletion.
And scan() has to be called _before_ the deferred call is registered.
(race condition: depending on the times, the previous patch could
apparently fail on the provided test. It's not the case anymore.)
#!/bin/sh
cat >> $HGRCPATH <<EOF
[extensions]
convert=
[convert]
hg.saverev=False
EOF
hg init orig
cd orig
echo foo > foo
echo bar > bar
hg ci -qAm 'add foo bar' -d '0 0'
echo >> foo
hg ci -m 'change foo' -d '1 0'
hg up -qC 0
hg copy --after --force foo bar
hg copy foo baz
hg ci -m 'make bar and baz copies of foo' -d '2 0'
hg merge
hg ci -m 'merge local copy' -d '3 0'
hg up -C 1
hg merge 2
hg ci -m 'merge remote copy' -d '4 0'
chmod +x baz
hg ci -m 'mark baz executable' -d '5 0'
cd ..
hg convert --datesort orig new 2>&1 | grep -v 'subversion python bindings could not be loaded'
cd new
hg out ../orig
cd ..
echo % init broken repository
hg init broken
cd broken
echo a >> a
echo b >> b
hg ci -qAm init
echo a >> a
echo b >> b
hg copy b c
hg ci -qAm changeall
hg up -qC 0
echo bc >> b
hg ci -m changebagain
HGMERGE=internal:local hg -q merge
hg ci -m merge
hg mv b d
hg ci -m moveb
echo % break it
rm .hg/store/data/b.*
cd ..
hg --config convert.hg.ignoreerrors=True convert broken fixed
hg -R fixed verify
echo '% manifest -r 0'
hg -R fixed manifest -r 0
echo '% manifest -r tip'
hg -R fixed manifest -r tip
true