Mercurial > hg
changeset 10096:a223894ca044
Merge with crew
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Fri, 18 Dec 2009 14:27:30 -0600 |
parents | 4e2fb6cc0e1e (diff) 69ce7a10e593 (current diff) |
children | c7eeec114d99 |
files | |
diffstat | 3 files changed, 30 insertions(+), 30 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/inotify/linuxserver.py Tue Dec 15 10:37:23 2009 +0000 +++ b/hgext/inotify/linuxserver.py Fri Dec 18 14:27:30 2009 -0600 @@ -170,6 +170,7 @@ server.repowatcher.__init__(self, ui, dirstate, root) self.lastevent = {} + self.dirty = False try: self.watcher = watcher.watcher() except OSError, err: @@ -214,7 +215,6 @@ def setup(self): self.ui.note(_('watching directories under %r\n') % self.wprefix) self.add_watch(self.wprefix + '.hg', inotify.IN_DELETE) - self.check_dirstate() def scan(self, topdir=''): ds = self.dirstate._map.copy() @@ -250,7 +250,7 @@ self.update_hgignore() try: st = self.stat(wpath) - if stat.S_ISREG(st[0]): + if stat.S_ISREG(st[0]) or stat.S_ISLNK(st[0]): self.updatefile(wpath, st) except OSError: pass @@ -272,8 +272,6 @@ if wpath == '.hgignore': self.update_hgignore() elif wpath.startswith('.hg/'): - if wpath == '.hg/wlock': - self.check_dirstate() return self.deletefile(wpath, self.dirstate[wpath]) @@ -335,6 +333,10 @@ self.ui.note(_('%s reading %d events\n') % (self.event_time(), len(events))) for evt in events: + if evt.fullpath == self.wprefix[:-1]: + # events on the root of the repository + # itself, e.g. permission changes or repository move + continue assert evt.fullpath.startswith(self.wprefix) wpath = evt.fullpath[self.prefixlen:] @@ -343,16 +345,26 @@ if wpath.startswith('.hg/') and evt.mask & inotify.IN_ISDIR: # ignore subdirectories of .hg/ (merge, patches...) continue + if wpath == ".hg/wlock": + if evt.mask & inotify.IN_DELETE: + self.dirstate.invalidate() + self.dirty = False + self.scan() + elif evt.mask & inotify.IN_CREATE: + self.dirty = True + else: + if self.dirty: + continue - if evt.mask & inotify.IN_UNMOUNT: - self.process_unmount(wpath, evt) - elif evt.mask & (inotify.IN_MODIFY | inotify.IN_ATTRIB): - self.process_modify(wpath, evt) - elif evt.mask & (inotify.IN_DELETE | inotify.IN_DELETE_SELF | - inotify.IN_MOVED_FROM): - self.process_delete(wpath, evt) - elif evt.mask & (inotify.IN_CREATE | inotify.IN_MOVED_TO): - self.process_create(wpath, evt) + if evt.mask & inotify.IN_UNMOUNT: + self.process_unmount(wpath, evt) + elif evt.mask & (inotify.IN_MODIFY | inotify.IN_ATTRIB): + self.process_modify(wpath, evt) + elif evt.mask & (inotify.IN_DELETE | inotify.IN_DELETE_SELF | + inotify.IN_MOVED_FROM): + self.process_delete(wpath, evt) + elif evt.mask & (inotify.IN_CREATE | inotify.IN_MOVED_TO): + self.process_create(wpath, evt) self.lastevent.clear()
--- a/hgext/inotify/server.py Tue Dec 15 10:37:23 2009 +0000 +++ b/hgext/inotify/server.py Fri Dec 18 14:27:30 2009 -0600 @@ -281,17 +281,6 @@ del self.statustrees[key].dir(root).files[fn] del self.tree.dir(root).files[fn] - def check_dirstate(self): - ds_info = self.dirstate_info() - if ds_info == self.ds_info: - return - self.ds_info = ds_info - if not self.ui.debugflag: - self.last_event = None - self.dirstate.invalidate() - self.handle_timeout() - self.scan() - def update_hgignore(self): # An update of the ignore file can potentially change the # states of all unknown and ignored files.
--- a/tests/run-tests.py Tue Dec 15 10:37:23 2009 +0000 +++ b/tests/run-tests.py Fri Dec 18 14:27:30 2009 -0600 @@ -251,9 +251,8 @@ return missing, failed -def showdiff(expected, output): - for line in difflib.unified_diff(expected, output, - "Expected output", "Test output"): +def showdiff(expected, output, ref, err): + for line in difflib.unified_diff(expected, output, ref, err): sys.stdout.write(line) def findprogram(program): @@ -452,13 +451,13 @@ if not options.verbose: skips.append((test, msg)) else: - print "\nSkipping %s: %s" % (test, msg) + print "\nSkipping %s: %s" % (testpath, msg) return None def fail(msg): fails.append((test, msg)) if not options.nodiff: - print "\nERROR: %s %s" % (test, msg) + print "\nERROR: %s %s" % (testpath, msg) return None vlog("# Test", test) @@ -565,7 +564,7 @@ else: fail("output changed") if not options.nodiff: - showdiff(refout, out) + showdiff(refout, out, ref, err) ret = 1 elif ret: mark = '!'