D3748: import: use context manager for lock, dirstateguard, transaction

yuja (Yuya Nishihara) phabricator at mercurial-scm.org
Fri Jun 15 22:00:27 EDT 2018


yuja added a comment.


  > +        if not opts.get('no_commit'):
  >  +            lock = repo.lock()
  >  +            try:
  > 
  >   tr = repo.transaction('import')
  > 
  > - else:
  > - dsguard = dirstateguard.dirstateguard(repo, 'import') +            except: +                lock.release()
  
  Needs to re-raise.
  
  > +            dsguard = util.nullcontextmanager()
  >  +        else:
  >  +            lock = util.nullcontextmanager()
  >  +            tr = util.nullcontextmanager()
  >  +            dsguard = dirstateguard.dirstateguard(repo, 'import')
  >  +        with lock, tr, dsguard:
  
  Another option is to wrap transaction and dirstateguard by lambda or partial,
  and call them with "with".
  
    with lock(), tr(), dsguard():

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D3748

To: martinvonz, #hg-reviewers
Cc: yuja, mercurial-devel


More information about the Mercurial-devel mailing list