comparison mercurial/localrepo.py @ 18952:8086b530e2ac

localrepo: use "vfs.rename()" instead of "util.rename()" This patch makes "_journalfiles()" return a list of pairs of journal file and corresponded vfs instance instead of a list of journal files in full path, to use "vfs.rename()" instead of "util.rename()" in "aftertrans()". "undofiles()" still returns a list of undo files in full path, because "repair.strip()" expects such list. It'll be also made to return a list of pairs of undo file and corresponded vfs at vfs migration for "repair.strip()" in the near future.
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
date Mon, 15 Apr 2013 01:22:15 +0900
parents d13916a00b7e
children f74f2a4e3327
comparison
equal deleted inserted replaced
18951:d13916a00b7e 18952:8086b530e2ac
809 if self.svfs.exists("journal"): 809 if self.svfs.exists("journal"):
810 raise error.RepoError( 810 raise error.RepoError(
811 _("abandoned transaction found - run hg recover")) 811 _("abandoned transaction found - run hg recover"))
812 812
813 self._writejournal(desc) 813 self._writejournal(desc)
814 renames = [(x, undoname(x)) for x in self._journalfiles()] 814 renames = [(vfs, x, undoname(x)) for vfs, x in self._journalfiles()]
815 815
816 tr = transaction.transaction(self.ui.warn, self.sopener, 816 tr = transaction.transaction(self.ui.warn, self.sopener,
817 self.sjoin("journal"), 817 self.sjoin("journal"),
818 aftertrans(renames), 818 aftertrans(renames),
819 self.store.createmode) 819 self.store.createmode)
820 self._transref = weakref.ref(tr) 820 self._transref = weakref.ref(tr)
821 return tr 821 return tr
822 822
823 def _journalfiles(self): 823 def _journalfiles(self):
824 return (self.sjoin('journal'), self.join('journal.dirstate'), 824 return ((self.svfs, 'journal'),
825 self.join('journal.branch'), self.join('journal.desc'), 825 (self.vfs, 'journal.dirstate'),
826 self.join('journal.bookmarks'), 826 (self.vfs, 'journal.branch'),
827 self.sjoin('journal.phaseroots')) 827 (self.vfs, 'journal.desc'),
828 (self.vfs, 'journal.bookmarks'),
829 (self.svfs, 'journal.phaseroots'))
828 830
829 def undofiles(self): 831 def undofiles(self):
830 return [undoname(x) for x in self._journalfiles()] 832 return [vfs.join(undoname(x)) for vfs, x in self._journalfiles()]
831 833
832 def _writejournal(self, desc): 834 def _writejournal(self, desc):
833 self.opener.write("journal.dirstate", 835 self.opener.write("journal.dirstate",
834 self.opener.tryread("dirstate")) 836 self.opener.tryread("dirstate"))
835 self.opener.write("journal.branch", 837 self.opener.write("journal.branch",
2573 2575
2574 # used to avoid circular references so destructors work 2576 # used to avoid circular references so destructors work
2575 def aftertrans(files): 2577 def aftertrans(files):
2576 renamefiles = [tuple(t) for t in files] 2578 renamefiles = [tuple(t) for t in files]
2577 def a(): 2579 def a():
2578 for src, dest in renamefiles: 2580 for vfs, src, dest in renamefiles:
2579 try: 2581 try:
2580 util.rename(src, dest) 2582 vfs.rename(src, dest)
2581 except OSError: # journal file does not yet exist 2583 except OSError: # journal file does not yet exist
2582 pass 2584 pass
2583 return a 2585 return a
2584 2586
2585 def undoname(fn): 2587 def undoname(fn):