Mercurial > hg
view tests/test-notify-changegroup @ 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 | b714aac1f7b3 |
children | ca6ede0988d5 |
line wrap: on
line source
#!/bin/sh cat <<EOF >> $HGRCPATH [extensions] notify= [hooks] changegroup.notify = python:hgext.notify.hook [notify] sources = push diffstat = False maxsubject = 200 [usersubs] foo@bar = * [reposubs] * = baz EOF hg init a echo % clone hg --traceback clone a b echo a > b/a echo % commit hg --traceback --cwd b commit -Ama echo a >> b/a echo % commit hg --traceback --cwd b commit -Amb echo % push hg --traceback --cwd b push ../a 2>&1 | python -c 'import sys,re; print re.sub("\n\t", " ", sys.stdin.read()),' | sed -e 's/\(Message-Id:\).*/\1/' \ -e 's/changeset \([0-9a-f]* *\)in .*test-notif/changeset \1in test-notif/' \ -e 's/^Subject: .*test-notify/Subject: test-notify/' \ -e 's/^details: .*test-notify/details: test-notify/' \ -e 's/^Date:.*/Date:/'