# HG changeset patch # User Eric Hopper # Date 1179419370 25200 # Node ID 3900f684a150ba9a847c499dd7bf6bf139070866 # Parent a210b40d0860b8fa6b5762e1542dfdc9ee61b4f5 Fix hg import --exact bug that hangs hg on failure. diff -r a210b40d0860 -r 3900f684a150 mercurial/commands.py --- a/mercurial/commands.py Sun May 13 19:15:54 2007 -0700 +++ b/mercurial/commands.py Thu May 17 09:29:30 2007 -0700 @@ -1565,7 +1565,7 @@ n = repo.commit(files, message, user, date, wlock=wlock, lock=lock) if opts.get('exact'): if hex(n) != nodeid: - repo.rollback() + repo.rollback(wlock=wlock, lock=lock) raise util.Abort(_('patch is damaged or loses information')) finally: os.unlink(tmpname) diff -r a210b40d0860 -r 3900f684a150 mercurial/localrepo.py --- a/mercurial/localrepo.py Sun May 13 19:15:54 2007 -0700 +++ b/mercurial/localrepo.py Thu May 17 09:29:30 2007 -0700 @@ -586,10 +586,11 @@ self.ui.warn(_("no interrupted transaction available\n")) return False - def rollback(self, wlock=None): + def rollback(self, wlock=None, lock=None): if not wlock: wlock = self.wlock() - l = self.lock() + if not lock: + lock = self.lock() if os.path.exists(self.sjoin("undo")): self.ui.status(_("rolling back last transaction\n")) transaction.rollback(self.sopener, self.sjoin("undo"))