comparison mercurial/commands.py @ 15278:2ed335669e18 stable

commands: use separate try/except and try/finally as needed for python2.4 62dc0e7ab092 introduced a try/except/finally block, which breaks compatibility with python2.4
author Thomas Arendsen Hein <thomas@intevation.de>
date Sun, 16 Oct 2011 11:12:59 +0200
parents 460135339d74
children 0e34699d6988
comparison
equal deleted inserted replaced
15275:8a7f1722b28e 15278:2ed335669e18
3541 return (msg, n) 3541 return (msg, n)
3542 finally: 3542 finally:
3543 os.unlink(tmpname) 3543 os.unlink(tmpname)
3544 3544
3545 try: 3545 try:
3546 wlock = repo.wlock() 3546 try:
3547 lock = repo.lock() 3547 wlock = repo.wlock()
3548 tr = repo.transaction('import') 3548 lock = repo.lock()
3549 parents = repo.parents() 3549 tr = repo.transaction('import')
3550 for patchurl in patches: 3550 parents = repo.parents()
3551 if patchurl == '-': 3551 for patchurl in patches:
3552 ui.status(_('applying patch from stdin\n')) 3552 if patchurl == '-':
3553 patchfile = ui.fin 3553 ui.status(_('applying patch from stdin\n'))
3554 patchurl = 'stdin' # for error message 3554 patchfile = ui.fin
3555 else: 3555 patchurl = 'stdin' # for error message
3556 patchurl = os.path.join(base, patchurl)
3557 ui.status(_('applying %s\n') % patchurl)
3558 patchfile = url.open(ui, patchurl)
3559
3560 haspatch = False
3561 for hunk in patch.split(patchfile):
3562 (msg, node) = tryone(ui, hunk, parents)
3563 if msg:
3564 haspatch = True
3565 ui.note(msg + '\n')
3566 if update or opts.get('exact'):
3567 parents = repo.parents()
3568 else: 3556 else:
3569 parents = [repo[node]] 3557 patchurl = os.path.join(base, patchurl)
3570 3558 ui.status(_('applying %s\n') % patchurl)
3571 if not haspatch: 3559 patchfile = url.open(ui, patchurl)
3572 raise util.Abort(_('%s: no diffs found') % patchurl) 3560
3573 3561 haspatch = False
3574 tr.close() 3562 for hunk in patch.split(patchfile):
3575 if msgs: 3563 (msg, node) = tryone(ui, hunk, parents)
3576 repo.savecommitmessage('\n* * *\n'.join(msgs)) 3564 if msg:
3577 except: 3565 haspatch = True
3578 # wlock.release() indirectly calls dirstate.write(): since 3566 ui.note(msg + '\n')
3579 # we're crashing, we do not want to change the working dir 3567 if update or opts.get('exact'):
3580 # parent after all, so make sure it writes nothing 3568 parents = repo.parents()
3581 repo.dirstate.invalidate() 3569 else:
3582 raise 3570 parents = [repo[node]]
3571
3572 if not haspatch:
3573 raise util.Abort(_('%s: no diffs found') % patchurl)
3574
3575 tr.close()
3576 if msgs:
3577 repo.savecommitmessage('\n* * *\n'.join(msgs))
3578 except:
3579 # wlock.release() indirectly calls dirstate.write(): since
3580 # we're crashing, we do not want to change the working dir
3581 # parent after all, so make sure it writes nothing
3582 repo.dirstate.invalidate()
3583 raise
3583 finally: 3584 finally:
3584 if tr: 3585 if tr:
3585 tr.release() 3586 tr.release()
3586 release(lock, wlock) 3587 release(lock, wlock)
3587 3588