[PATCH 2 of 5] inotify: server: use wprefix everywhere, introduce prefixlen

Nicolas Dumazet nicdumz at gmail.com
Fri Aug 14 02:11:51 CDT 2009


# HG changeset patch
# User Nicolas Dumazet <nicdumz.commits at gmail.com>
# Date 1246205106 -32400
# Node ID b9a2bd8a409a8069ac4356a4a1a108fbc06aafa8
# Parent  d5a60d6e167f821a1788abe1b83bc20f7012acca
inotify: server: use wprefix everywhere, introduce prefixlen

self.wprefix = self.repo.root + '/' = self.repo.wjoin('') + '/'
Since we'll eventually get rid of self.repo, keep only the first form.

use self.prefixlen to compute only once the root prefix size.

diff --git a/hgext/inotify/server.py b/hgext/inotify/server.py
--- a/hgext/inotify/server.py
+++ b/hgext/inotify/server.py
@@ -312,7 +312,8 @@
     def __init__(self, ui, repo):
         self.ui = ui
         self.repo = repo
-        self.wprefix = self.repo.wjoin('')
+        self.wprefix = repo.root + '/'
+        self.prefixlen = len(self.wprefix)
         try:
             self.watcher = watcher.watcher()
         except OSError, err:
@@ -363,7 +364,7 @@
             return
         if self.watcher.path(path) is None:
             if self.ui.debugflag:
-                self.ui.note(_('watching %r\n') % path[len(self.wprefix):])
+                self.ui.note(_('watching %r\n') % path[self.prefixlen:])
             try:
                 self.watcher.add(path, mask)
             except OSError, err:
@@ -374,7 +375,7 @@
                 _explain_watch_limit(self.ui, self.repo)
 
     def setup(self):
-        self.ui.note(_('watching directories under %r\n') % self.repo.root)
+        self.ui.note(_('watching directories under %r\n') % self.wprefix)
         self.add_watch(self.repo.path, inotify.IN_DELETE)
         self.check_dirstate()
 
@@ -466,13 +467,13 @@
 
     def scan(self, topdir=''):
         ds = self.repo.dirstate._map.copy()
-        self.add_watch(join(self.repo.root, topdir), self.mask)
+        self.add_watch(self.wprefix + topdir, self.mask)
         for root, dirs, files in walk(self.repo, topdir):
             for d in dirs:
                 self.add_watch(join(root, d), self.mask)
-            wroot = root[len(self.wprefix):]
+            wroot = root[self.prefixlen:]
             for fn in files:
-                wfn = join(wroot, fn)
+                wfn = wroot + '/' + fn
                 self.updatefile(wfn, self.getstat(wfn))
                 ds.pop(wfn, None)
         wtopdir = topdir
@@ -533,7 +534,7 @@
 
     def stat(self, wpath):
         try:
-            st = os.lstat(join(self.wprefix, wpath))
+            st = os.lstat(self.wprefix + wpath)
             ret = st.st_mode, st.st_size, st.st_mtime
             self.statcache[wpath] = ret
             return ret
@@ -633,7 +634,7 @@
                          (self.event_time(), len(events)))
         for evt in events:
             assert evt.fullpath.startswith(self.wprefix)
-            wpath = evt.fullpath[len(self.wprefix):]
+            wpath = evt.fullpath[self.prefixlen:]
 
             # paths have been normalized, wpath never ends with a '/'
 
@@ -671,7 +672,7 @@
         Returns a sorted list of relatives paths currently watched,
         for debugging purposes.
         """
-        return sorted(tuple[0][len(self.wprefix):] for tuple in self.watcher)
+        return sorted(tuple[0][self.prefixlen:] for tuple in self.watcher)
 
 class server(pollable):
     """


More information about the Mercurial-devel mailing list