570 ds = self.opener("dirstate").read() |
570 ds = self.opener("dirstate").read() |
571 except IOError: |
571 except IOError: |
572 ds = "" |
572 ds = "" |
573 self.opener("journal.dirstate", "w").write(ds) |
573 self.opener("journal.dirstate", "w").write(ds) |
574 self.opener("journal.branch", "w").write(self.dirstate.branch()) |
574 self.opener("journal.branch", "w").write(self.dirstate.branch()) |
575 self.opener("journal.desc", "w").write("%d,%s" % (len(self), desc)) |
575 self.opener("journal.desc", "w").write("%d\n%s\n" % (len(self), desc)) |
576 |
576 |
577 renames = [(self.sjoin("journal"), self.sjoin("undo")), |
577 renames = [(self.sjoin("journal"), self.sjoin("undo")), |
578 (self.join("journal.dirstate"), self.join("undo.dirstate")), |
578 (self.join("journal.dirstate"), self.join("undo.dirstate")), |
579 (self.join("journal.branch"), self.join("undo.branch")), |
579 (self.join("journal.branch"), self.join("undo.branch")), |
580 (self.join("journal.desc"), self.join("undo.desc"))] |
580 (self.join("journal.desc"), self.join("undo.desc"))] |
605 try: |
605 try: |
606 wlock = self.wlock() |
606 wlock = self.wlock() |
607 lock = self.lock() |
607 lock = self.lock() |
608 if os.path.exists(self.sjoin("undo")): |
608 if os.path.exists(self.sjoin("undo")): |
609 try: |
609 try: |
610 args = self.opener("undo.desc", "r").read().split(",") |
610 args = self.opener("undo.desc", "r").read().splitlines() |
611 if len(args) == 3 and self.ui.verbose: |
611 if len(args) >= 3 and self.ui.verbose: |
612 desc = _("rolling back %s (%s) to revision %s\n") % ( |
612 desc = _("rolling back %s (%s) to revision %s\n") % ( |
613 args[1], args[2], args[0]) |
613 args[1], args[2], args[0]) |
614 else: |
614 elif len(args) >= 2: |
615 desc = _("rolling back %s to revision %s\n") % ( |
615 desc = _("rolling back %s to revision %s\n") % ( |
616 args[1], args[0]) |
616 args[1], args[0]) |
617 except (IOError, IndexError): |
617 except IOError: |
618 desc = _("rolling back unknown transaction\n") |
618 desc = _("rolling back unknown transaction\n") |
619 self.ui.status(desc) |
619 self.ui.status(desc) |
620 if dryrun: |
620 if dryrun: |
621 return |
621 return |
622 transaction.rollback(self.sopener, self.sjoin("undo"), |
622 transaction.rollback(self.sopener, self.sjoin("undo"), |
2017 # inconsistent view |
2017 # inconsistent view |
2018 cl = self.changelog |
2018 cl = self.changelog |
2019 cl.delayupdate() |
2019 cl.delayupdate() |
2020 oldheads = len(cl.heads()) |
2020 oldheads = len(cl.heads()) |
2021 |
2021 |
2022 tr = self.transaction(",".join([srctype, urlmod.hidepassword(url)])) |
2022 tr = self.transaction("\n".join([srctype, urlmod.hidepassword(url)])) |
2023 try: |
2023 try: |
2024 trp = weakref.proxy(tr) |
2024 trp = weakref.proxy(tr) |
2025 # pull off the changeset group |
2025 # pull off the changeset group |
2026 self.ui.status(_("adding changesets\n")) |
2026 self.ui.status(_("adding changesets\n")) |
2027 clstart = len(cl) |
2027 clstart = len(cl) |