comparison mercurial/localrepo.py @ 16456:42862d64aa8f

journal: use tryread helper to backup files (issue3375)
author Matt Mackall <mpm@selenic.com>
date Tue, 17 Apr 2012 11:13:38 -0500
parents 9dd10a574af2
children 63c817ea4a70
comparison
equal deleted inserted replaced
16455:154219f3a6a4 16456:42862d64aa8f
741 741
742 def undofiles(self): 742 def undofiles(self):
743 return [undoname(x) for x in self._journalfiles()] 743 return [undoname(x) for x in self._journalfiles()]
744 744
745 def _writejournal(self, desc): 745 def _writejournal(self, desc):
746 # save dirstate for rollback 746 self.opener.write("journal.dirstate",
747 try: 747 self.opener.tryread("dirstate"))
748 ds = self.opener.read("dirstate")
749 except IOError:
750 ds = ""
751 self.opener.write("journal.dirstate", ds)
752 self.opener.write("journal.branch", 748 self.opener.write("journal.branch",
753 encoding.fromlocal(self.dirstate.branch())) 749 encoding.fromlocal(self.dirstate.branch()))
754 self.opener.write("journal.desc", 750 self.opener.write("journal.desc",
755 "%d\n%s\n" % (len(self), desc)) 751 "%d\n%s\n" % (len(self), desc))
756 752 self.opener.write("journal.bookmarks",
757 try: 753 self.opener.tryread("bookmarks"))
758 bk = self.opener.read("bookmarks") 754 self.sopener.write("journal.phaseroots",
759 except IOError: 755 self.sopener.tryread("phaseroots"))
760 bk = ""
761 self.opener.write("journal.bookmarks", bk)
762
763 phasesname = self.sjoin('phaseroots')
764 if os.path.exists(phasesname):
765 util.copyfile(phasesname, self.sjoin('journal.phaseroots'))
766 else:
767 self.sopener.write('journal.phaseroots', '')
768 756
769 def recover(self): 757 def recover(self):
770 lock = self.lock() 758 lock = self.lock()
771 try: 759 try:
772 if os.path.exists(self.sjoin("journal")): 760 if os.path.exists(self.sjoin("journal")):