mercurial/commands.py
changeset 24994 713b09fc9fbb
parent 24947 a02d293a1079
child 25082 e30b66bb7d4d
equal deleted inserted replaced
24993:be58bd30a478 24994:713b09fc9fbb
  4211         cmdutil.checkunfinished(repo)
  4211         cmdutil.checkunfinished(repo)
  4212     if (opts.get('exact') or not opts.get('force')) and update:
  4212     if (opts.get('exact') or not opts.get('force')) and update:
  4213         cmdutil.bailifchanged(repo)
  4213         cmdutil.bailifchanged(repo)
  4214 
  4214 
  4215     base = opts["base"]
  4215     base = opts["base"]
  4216     wlock = lock = tr = None
  4216     wlock = dsguard = lock = tr = None
  4217     msgs = []
  4217     msgs = []
  4218     ret = 0
  4218     ret = 0
  4219 
  4219 
  4220 
  4220 
  4221     try:
  4221     try:
  4222         try:
  4222         try:
  4223             wlock = repo.wlock()
  4223             wlock = repo.wlock()
  4224             repo.dirstate.beginparentchange()
  4224             dsguard = cmdutil.dirstateguard(repo, 'import')
  4225             if not opts.get('no_commit'):
  4225             if not opts.get('no_commit'):
  4226                 lock = repo.lock()
  4226                 lock = repo.lock()
  4227                 tr = repo.transaction('import')
  4227                 tr = repo.transaction('import')
  4228             parents = repo.parents()
  4228             parents = repo.parents()
  4229             for patchurl in patches:
  4229             for patchurl in patches:
  4260 
  4260 
  4261             if tr:
  4261             if tr:
  4262                 tr.close()
  4262                 tr.close()
  4263             if msgs:
  4263             if msgs:
  4264                 repo.savecommitmessage('\n* * *\n'.join(msgs))
  4264                 repo.savecommitmessage('\n* * *\n'.join(msgs))
  4265             repo.dirstate.endparentchange()
  4265             dsguard.close()
  4266             return ret
  4266             return ret
  4267         except: # re-raises
  4267         finally:
  4268             # wlock.release() indirectly calls dirstate.write(): since
  4268             # TODO: get rid of this meaningless try/finally enclosing.
  4269             # we're crashing, we do not want to change the working dir
  4269             # this is kept only to reduce changes in a patch.
  4270             # parent after all, so make sure it writes nothing
  4270             pass
  4271             repo.dirstate.invalidate()
       
  4272             raise
       
  4273     finally:
  4271     finally:
  4274         if tr:
  4272         if tr:
  4275             tr.release()
  4273             tr.release()
  4276         release(lock, wlock)
  4274         release(lock, dsguard, wlock)
  4277 
  4275 
  4278 @command('incoming|in',
  4276 @command('incoming|in',
  4279     [('f', 'force', None,
  4277     [('f', 'force', None,
  4280      _('run even if remote repository is unrelated')),
  4278      _('run even if remote repository is unrelated')),
  4281     ('n', 'newest-first', None, _('show newest record first')),
  4279     ('n', 'newest-first', None, _('show newest record first')),