Mercurial > hg
view tests/test-mq-header-date @ 9116:f90bbf1ea09f
inotify: fix issue1375, add a test.
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 b55d44719b47.
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.
author | Nicolas Dumazet <nicdumz.commits@gmail.com> |
---|---|
date | Mon, 13 Jul 2009 16:49:05 +0200 |
parents | 38b592536a58 |
children | 8cb81d75730c |
line wrap: on
line source
#!/bin/sh echo "[extensions]" >> $HGRCPATH echo "mq=" >> $HGRCPATH echo "[diff]" >> $HGRCPATH echo "nodates=true" >> $HGRCPATH catpatch() { cat .hg/patches/$1.patch | sed -e "s/^diff \-r [0-9a-f]* /diff -r ... /" } catlog() { catpatch $1 hg log --template "{rev}: {desc} - {author}\n" } catlogd() { catpatch $1 hg log --template "{rev}: {desc} - {author} - {date}\n" } drop() { hg qpop hg qdel $1.patch } echo ==== init hg init a cd a hg qinit echo ==== qnew -d hg qnew -d '3 0' 1.patch catlogd 1 echo ==== qref echo "1" >1 hg add hg qref catlogd 1 echo ==== qref -d hg qref -d '4 0' catlogd 1 echo ==== qnew hg qnew 2.patch echo "2" >2 hg add hg qref catlog 2 echo ==== qref -d hg qref -d '5 0' catlog 2 drop 2 echo ==== qnew -d -m hg qnew -d '6 0' -m "Three" 3.patch catlogd 3 echo ==== qref echo "3" >3 hg add hg qref catlogd 3 echo ==== qref -m hg qref -m "Drei" catlogd 3 echo ==== qref -d hg qref -d '7 0' catlogd 3 echo ==== qref -d -m hg qref -d '8 0' -m "Three (again)" catlogd 3 echo ==== qnew -m hg qnew -m "Four" 4.patch echo "4" >4 hg add hg qref catlog 4 echo ==== qref -d hg qref -d '9 0' catlog 4 drop 4 echo ==== qnew with HG header hg qnew 5.patch hg qpop echo "# HG changeset patch" >>.hg/patches/5.patch echo "# Date 10 0" >>.hg/patches/5.patch hg qpush 2>&1 | grep 'Now at' catlogd 5 echo ==== hg qref echo "5" >5 hg add hg qref catlogd 5 echo ==== hg qref -d hg qref -d '11 0' catlogd 5 echo ==== qnew -u hg qnew -u jane 6.patch echo "6" >6 hg add hg qref catlog 6 echo ==== qref -d hg qref -d '12 0' catlog 6 drop 6 echo ==== qnew -d hg qnew -d '13 0' 7.patch echo "7" >7 hg add hg qref catlog 7 echo ==== qref -u hg qref -u john catlogd 7 echo ==== qnew hg qnew 8.patch echo "8" >8 hg add hg qref catlog 8 echo ==== qref -u -d hg qref -u john -d '14 0' catlog 8 drop 8 echo ==== qnew -m hg qnew -m "Nine" 9.patch echo "9" >9 hg add hg qref catlog 9 echo ==== qref -u -d hg qref -u john -d '15 0' catlog 9 drop 9 echo ==== "qpop -a / qpush -a" hg qpop -a hg qpush -a hg log --template "{rev}: {desc} - {author} - {date}\n"