mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 00:45:18 +03:00
2645ee079e
The biggest problem was the data structure, which did not allow changing a file into a directory or vice versa. This problem is fixed by 47d29dcb7266. The walk() method also had an issue in this case: - we know 'path' as a directory. inotify server sleeps. - 'path' is deleted - 'path' is recreated as a file - the server catches up here, and see the deletion. it instantiates a scan(), which in its turn calls for walk(repo, path). - walk() then assumes that 'path' is a directory and calls os.listdir on it, which raises an OSError(errno.ENOTDIR) Catch the error, and yield the file instead of the directory contents.
74 lines
889 B
Bash
Executable File
74 lines
889 B
Bash
Executable File
#!/bin/sh
|
|
|
|
"$TESTDIR/hghave" inotify || exit 80
|
|
|
|
hg init
|
|
|
|
touch a b c d e
|
|
mkdir dir
|
|
mkdir dir/bar
|
|
touch dir/x dir/y dir/bar/foo
|
|
|
|
hg ci -Am m
|
|
|
|
echo "[extensions]" >> $HGRCPATH
|
|
echo "inotify=" >> $HGRCPATH
|
|
|
|
echo % inserve
|
|
hg inserve -d --pid-file=hg.pid
|
|
cat hg.pid >> "$DAEMON_PIDS"
|
|
|
|
# let the daemon finish its stuff
|
|
sleep 1
|
|
# issue907
|
|
hg status
|
|
echo % clean
|
|
hg status -c
|
|
echo % all
|
|
hg status -A
|
|
|
|
echo '% path patterns'
|
|
echo x > dir/x
|
|
hg status .
|
|
hg status dir
|
|
cd dir
|
|
hg status .
|
|
cd ..
|
|
|
|
#issue 1375
|
|
#Testing that we can remove a folder and then add a file with the same name
|
|
echo % issue 1375
|
|
|
|
mkdir h
|
|
echo h > h/h
|
|
hg ci -Am t
|
|
hg rm h
|
|
|
|
echo h >h
|
|
hg add h
|
|
|
|
hg status
|
|
hg ci -m0
|
|
|
|
# Test for issue1735: inotify watches files in .hg/merge
|
|
hg st
|
|
|
|
echo a > a
|
|
|
|
hg ci -Am a
|
|
hg st
|
|
|
|
echo b >> a
|
|
hg ci -m ab
|
|
hg st
|
|
|
|
echo c >> a
|
|
hg st
|
|
|
|
hg up 0
|
|
hg st
|
|
|
|
HGMERGE=internal:local hg up
|
|
hg st
|
|
kill `cat hg.pid`
|