comparison hgext/keyword.py @ 14835:ec4d4114e7fe

keyword: reuse already present working contexts for match Shortens overlong line as side-effect.
author Christian Ebert <blacktrash@gmx.net>
date Sun, 03 Jul 2011 12:58:03 +0200
parents 35c2cc322ba8
children 261482576c1e
comparison
equal deleted inserted replaced
14834:a2de9da4604d 14835:ec4d4114e7fe
320 def cmp(self, node, text): 320 def cmp(self, node, text):
321 '''Removes keyword substitutions for comparison.''' 321 '''Removes keyword substitutions for comparison.'''
322 text = self.kwt.shrink(self.path, text) 322 text = self.kwt.shrink(self.path, text)
323 return super(kwfilelog, self).cmp(node, text) 323 return super(kwfilelog, self).cmp(node, text)
324 324
325 def _status(ui, repo, kwt, *pats, **opts): 325 def _status(ui, repo, wctx, kwt, *pats, **opts):
326 '''Bails out if [keyword] configuration is not active. 326 '''Bails out if [keyword] configuration is not active.
327 Returns status of working directory.''' 327 Returns status of working directory.'''
328 if kwt: 328 if kwt:
329 return repo.status(match=scmutil.match(repo[None], pats, opts), clean=True, 329 return repo.status(match=scmutil.match(wctx, pats, opts), clean=True,
330 unknown=opts.get('unknown') or opts.get('all')) 330 unknown=opts.get('unknown') or opts.get('all'))
331 if ui.configitems('keyword'): 331 if ui.configitems('keyword'):
332 raise util.Abort(_('[keyword] patterns cannot match')) 332 raise util.Abort(_('[keyword] patterns cannot match'))
333 raise util.Abort(_('no [keyword] patterns configured')) 333 raise util.Abort(_('no [keyword] patterns configured'))
334 334
338 if len(wctx.parents()) > 1: 338 if len(wctx.parents()) > 1:
339 raise util.Abort(_('outstanding uncommitted merge')) 339 raise util.Abort(_('outstanding uncommitted merge'))
340 kwt = kwtools['templater'] 340 kwt = kwtools['templater']
341 wlock = repo.wlock() 341 wlock = repo.wlock()
342 try: 342 try:
343 status = _status(ui, repo, kwt, *pats, **opts) 343 status = _status(ui, repo, wctx, kwt, *pats, **opts)
344 modified, added, removed, deleted, unknown, ignored, clean = status 344 modified, added, removed, deleted, unknown, ignored, clean = status
345 if modified or added or removed or deleted: 345 if modified or added or removed or deleted:
346 raise util.Abort(_('outstanding uncommitted changes')) 346 raise util.Abort(_('outstanding uncommitted changes'))
347 kwt.overwrite(wctx, clean, True, expand) 347 kwt.overwrite(wctx, clean, True, expand)
348 finally: 348 finally:
473 k = keyword expansion candidate (not tracked) 473 k = keyword expansion candidate (not tracked)
474 I = ignored 474 I = ignored
475 i = ignored (not tracked) 475 i = ignored (not tracked)
476 ''' 476 '''
477 kwt = kwtools['templater'] 477 kwt = kwtools['templater']
478 status = _status(ui, repo, kwt, *pats, **opts) 478 wctx = repo[None]
479 status = _status(ui, repo, wctx, kwt, *pats, **opts)
479 cwd = pats and repo.getcwd() or '' 480 cwd = pats and repo.getcwd() or ''
480 modified, added, removed, deleted, unknown, ignored, clean = status 481 modified, added, removed, deleted, unknown, ignored, clean = status
481 files = [] 482 files = []
482 if not opts.get('unknown') or opts.get('all'): 483 if not opts.get('unknown') or opts.get('all'):
483 files = sorted(modified + added + clean) 484 files = sorted(modified + added + clean)
484 wctx = repo[None]
485 kwfiles = kwt.iskwfile(files, wctx) 485 kwfiles = kwt.iskwfile(files, wctx)
486 kwdeleted = kwt.iskwfile(deleted, wctx) 486 kwdeleted = kwt.iskwfile(deleted, wctx)
487 kwunknown = kwt.iskwfile(unknown, wctx) 487 kwunknown = kwt.iskwfile(unknown, wctx)
488 if not opts.get('ignore') or opts.get('all'): 488 if not opts.get('ignore') or opts.get('all'):
489 showfiles = kwfiles, kwdeleted, kwunknown 489 showfiles = kwfiles, kwdeleted, kwunknown