comparison hgext/censor.py @ 38441:e219e355e088

censor: use context manager for lock management
author Matt Harbison <matt_harbison@yahoo.com>
date Fri, 24 Mar 2017 00:32:31 -0400
parents 0596d27457c6
children e7aa113b14f7
comparison
equal deleted inserted replaced
38440:3813c6b7337c 38441:e219e355e088
30 from mercurial.i18n import _ 30 from mercurial.i18n import _
31 from mercurial.node import short 31 from mercurial.node import short
32 32
33 from mercurial import ( 33 from mercurial import (
34 error, 34 error,
35 lock as lockmod,
36 registrar, 35 registrar,
37 revlog, 36 revlog,
38 scmutil, 37 scmutil,
39 util, 38 util,
40 ) 39 )
50 @command('censor', 49 @command('censor',
51 [('r', 'rev', '', _('censor file from specified revision'), _('REV')), 50 [('r', 'rev', '', _('censor file from specified revision'), _('REV')),
52 ('t', 'tombstone', '', _('replacement tombstone data'), _('TEXT'))], 51 ('t', 'tombstone', '', _('replacement tombstone data'), _('TEXT'))],
53 _('-r REV [-t TEXT] [FILE]')) 52 _('-r REV [-t TEXT] [FILE]'))
54 def censor(ui, repo, path, rev='', tombstone='', **opts): 53 def censor(ui, repo, path, rev='', tombstone='', **opts):
55 wlock = lock = None 54 with repo.wlock(), repo.lock():
56 try:
57 wlock = repo.wlock()
58 lock = repo.lock()
59 return _docensor(ui, repo, path, rev, tombstone, **opts) 55 return _docensor(ui, repo, path, rev, tombstone, **opts)
60 finally:
61 lockmod.release(lock, wlock)
62 56
63 def _docensor(ui, repo, path, rev='', tombstone='', **opts): 57 def _docensor(ui, repo, path, rev='', tombstone='', **opts):
64 if not path: 58 if not path:
65 raise error.Abort(_('must specify file path to censor')) 59 raise error.Abort(_('must specify file path to censor'))
66 if not rev: 60 if not rev: