comparison mercurial/localrepo.py @ 15455:c6f87bdab2a1

phases: add rollback support
author Pierre-Yves David <pierre-yves.david@ens-lyon.org>
date Mon, 07 Nov 2011 12:27:25 +0100
parents 5a7dde5adec8
children abcaaf51d568
comparison
equal deleted inserted replaced
15454:5a7dde5adec8 15455:c6f87bdab2a1
756 bkname = self.join('bookmarks') 756 bkname = self.join('bookmarks')
757 if os.path.exists(bkname): 757 if os.path.exists(bkname):
758 util.copyfile(bkname, self.join('journal.bookmarks')) 758 util.copyfile(bkname, self.join('journal.bookmarks'))
759 else: 759 else:
760 self.opener.write('journal.bookmarks', '') 760 self.opener.write('journal.bookmarks', '')
761 phasesname = self.sjoin('phaseroots')
762 if os.path.exists(phasesname):
763 util.copyfile(phasesname, self.sjoin('journal.phaseroots'))
764 else:
765 self.sopener.write('journal.phaseroots', '')
761 766
762 return (self.sjoin('journal'), self.join('journal.dirstate'), 767 return (self.sjoin('journal'), self.join('journal.dirstate'),
763 self.join('journal.branch'), self.join('journal.desc'), 768 self.join('journal.branch'), self.join('journal.desc'),
764 self.join('journal.bookmarks')) 769 self.join('journal.bookmarks'),
770 self.sjoin('journal.phaseroots'))
765 771
766 def recover(self): 772 def recover(self):
767 lock = self.lock() 773 lock = self.lock()
768 try: 774 try:
769 if os.path.exists(self.sjoin("journal")): 775 if os.path.exists(self.sjoin("journal")):
824 parents = self.dirstate.parents() 830 parents = self.dirstate.parents()
825 transaction.rollback(self.sopener, self.sjoin('undo'), ui.warn) 831 transaction.rollback(self.sopener, self.sjoin('undo'), ui.warn)
826 if os.path.exists(self.join('undo.bookmarks')): 832 if os.path.exists(self.join('undo.bookmarks')):
827 util.rename(self.join('undo.bookmarks'), 833 util.rename(self.join('undo.bookmarks'),
828 self.join('bookmarks')) 834 self.join('bookmarks'))
835 if os.path.exists(self.sjoin('undo.phaseroots')):
836 util.rename(self.sjoin('undo.phaseroots'),
837 self.sjoin('phaseroots'))
829 self.invalidate() 838 self.invalidate()
830 839
831 parentgone = (parents[0] not in self.changelog.nodemap or 840 parentgone = (parents[0] not in self.changelog.nodemap or
832 parents[1] not in self.changelog.nodemap) 841 parents[1] not in self.changelog.nodemap)
833 if parentgone: 842 if parentgone: