Mercurial > hg
comparison hgext/inotify/server.py @ 8382:6f44b1adc948
inotify: RepoWatcher.updatestatus: document & use meaningful parameter names
author | Nicolas Dumazet <nicdumz.commits@gmail.com> |
---|---|
date | Fri, 08 May 2009 17:45:01 +0900 |
parents | f52fcc864df4 |
children | dcfdcb51ac5c |
comparison
equal
deleted
inserted
replaced
8381:f52fcc864df4 | 8382:6f44b1adc948 |
---|---|
251 return 'n' | 251 return 'n' |
252 if type_ == '?' and self.repo.dirstate._ignore(fn): | 252 if type_ == '?' and self.repo.dirstate._ignore(fn): |
253 return 'i' | 253 return 'i' |
254 return type_ | 254 return type_ |
255 | 255 |
256 def updatestatus(self, wfn, st=None, status=None): | 256 def updatestatus(self, wfn, osstat=None, newstatus=None): |
257 if st: | 257 ''' |
258 status = self.filestatus(wfn, st) | 258 Update the stored status of a file or directory. |
259 | |
260 osstat: (mode, size, time) tuple, as returned by os.lstat(wfn) | |
261 | |
262 newstatus: char in statuskeys, new status to apply. | |
263 ''' | |
264 if osstat: | |
265 newstatus = self.filestatus(wfn, osstat) | |
259 else: | 266 else: |
260 self.statcache.pop(wfn, None) | 267 self.statcache.pop(wfn, None) |
261 root, fn = self.split(wfn) | 268 root, fn = self.split(wfn) |
262 d = self.dir(self.tree, root) | 269 d = self.dir(self.tree, root) |
263 oldstatus = d.get(fn) | 270 oldstatus = d.get(fn) |
264 isdir = False | 271 isdir = False |
265 if oldstatus: | 272 if oldstatus: |
266 try: | 273 try: |
267 if not status: | 274 if not newstatus: |
268 if oldstatus in 'almn': | 275 if oldstatus in 'almn': |
269 status = '!' | 276 newstatus = '!' |
270 elif oldstatus == 'r': | 277 elif oldstatus == 'r': |
271 status = 'r' | 278 newstatus = 'r' |
272 except TypeError: | 279 except TypeError: |
273 # oldstatus may be a dict left behind by a deleted | 280 # oldstatus may be a dict left behind by a deleted |
274 # directory | 281 # directory |
275 isdir = True | 282 isdir = True |
276 else: | 283 else: |
277 if oldstatus in self.statuskeys and oldstatus != status: | 284 if oldstatus in self.statuskeys and oldstatus != newstatus: |
278 del self.dir(self.statustrees[oldstatus], root)[fn] | 285 del self.dir(self.statustrees[oldstatus], root)[fn] |
279 if self.ui.debugflag and oldstatus != status: | 286 if self.ui.debugflag and oldstatus != newstatus: |
280 if isdir: | 287 if isdir: |
281 self.ui.note(_('status: %r dir(%d) -> %s\n') % | 288 self.ui.note(_('status: %r dir(%d) -> %s\n') % |
282 (wfn, len(oldstatus), status)) | 289 (wfn, len(oldstatus), newstatus)) |
283 else: | 290 else: |
284 self.ui.note(_('status: %r %s -> %s\n') % | 291 self.ui.note(_('status: %r %s -> %s\n') % |
285 (wfn, oldstatus, status)) | 292 (wfn, oldstatus, newstatus)) |
286 if not isdir: | 293 if not isdir: |
287 if status and status != 'i': | 294 if newstatus and newstatus != 'i': |
288 d[fn] = status | 295 d[fn] = newstatus |
289 if status in self.statuskeys: | 296 if newstatus in self.statuskeys: |
290 dd = self.dir(self.statustrees[status], root) | 297 dd = self.dir(self.statustrees[newstatus], root) |
291 if oldstatus != status or fn not in dd: | 298 if oldstatus != newstatus or fn not in dd: |
292 dd[fn] = status | 299 dd[fn] = newstatus |
293 else: | 300 else: |
294 d.pop(fn, None) | 301 d.pop(fn, None) |
295 elif not status: | 302 elif not newstatus: |
296 # a directory is being removed, check its contents | 303 # a directory is being removed, check its contents |
297 for subfile, b in oldstatus.copy().iteritems(): | 304 for subfile, b in oldstatus.copy().iteritems(): |
298 self.updatestatus(wfn + '/' + subfile, None) | 305 self.updatestatus(wfn + '/' + subfile, None) |
299 | 306 |
300 | 307 |
331 continue | 338 continue |
332 try: | 339 try: |
333 st = self.stat(wfn) | 340 st = self.stat(wfn) |
334 except OSError: | 341 except OSError: |
335 status = state[0] | 342 status = state[0] |
336 self.updatestatus(wfn, None, status=status) | 343 self.updatestatus(wfn, None, newstatus=status) |
337 else: | 344 else: |
338 self.updatestatus(wfn, st) | 345 self.updatestatus(wfn, st) |
339 self.check_deleted('!') | 346 self.check_deleted('!') |
340 self.check_deleted('r') | 347 self.check_deleted('r') |
341 | 348 |