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.
--- a/mercurial/localrepo.py Mon Apr 15 01:22:15 2013 +0900
+++ b/mercurial/localrepo.py Mon Apr 15 01:22:15 2013 +0900
@@ -811,7 +811,7 @@
_("abandoned transaction found - run hg recover"))
self._writejournal(desc)
- renames = [(x, undoname(x)) for x in self._journalfiles()]
+ renames = [(vfs, x, undoname(x)) for vfs, x in self._journalfiles()]
tr = transaction.transaction(self.ui.warn, self.sopener,
self.sjoin("journal"),
@@ -821,13 +821,15 @@
return tr
def _journalfiles(self):
- return (self.sjoin('journal'), self.join('journal.dirstate'),
- self.join('journal.branch'), self.join('journal.desc'),
- self.join('journal.bookmarks'),
- self.sjoin('journal.phaseroots'))
+ return ((self.svfs, 'journal'),
+ (self.vfs, 'journal.dirstate'),
+ (self.vfs, 'journal.branch'),
+ (self.vfs, 'journal.desc'),
+ (self.vfs, 'journal.bookmarks'),
+ (self.svfs, 'journal.phaseroots'))
def undofiles(self):
- return [undoname(x) for x in self._journalfiles()]
+ return [vfs.join(undoname(x)) for vfs, x in self._journalfiles()]
def _writejournal(self, desc):
self.opener.write("journal.dirstate",
@@ -2575,9 +2577,9 @@
def aftertrans(files):
renamefiles = [tuple(t) for t in files]
def a():
- for src, dest in renamefiles:
+ for vfs, src, dest in renamefiles:
try:
- util.rename(src, dest)
+ vfs.rename(src, dest)
except OSError: # journal file does not yet exist
pass
return a