Mercurial > public > mercurial-scm > hg
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): |