subrepo: migrate to scmutil.backuppath()
This has a test impact. It seems to me to be for the better.
Differential Revision: https://phab.mercurial-scm.org/D5859
--- a/mercurial/subrepo.py Mon Feb 04 21:31:18 2019 -0800
+++ b/mercurial/subrepo.py Tue Feb 05 09:43:34 2019 -0800
@@ -1824,15 +1824,15 @@
if not opts.get(r'no_backup'):
status = self.status(None)
names = status.modified
- origvfs = scmutil.getorigvfs(self.ui, self._subparent)
- if origvfs is None:
- origvfs = self.wvfs
for name in names:
- bakname = scmutil.origpath(self.ui, self._subparent, name)
+ # backuppath() expects a path relative to the parent repo (the
+ # repo that ui.origbackuppath is relative to)
+ parentname = os.path.join(self._path, name)
+ bakname = scmutil.backuppath(self.ui, self._subparent,
+ parentname)
self.ui.note(_('saving current version of %s as %s\n') %
(name, os.path.relpath(bakname)))
- name = self.wvfs.join(name)
- origvfs.rename(name, bakname)
+ util.rename(self.wvfs.join(name), bakname)
if not opts.get(r'dry_run'):
self.get(substate, overwrite=True)
--- a/tests/test-subrepo-git.t Mon Feb 04 21:31:18 2019 -0800
+++ b/tests/test-subrepo-git.t Tue Feb 05 09:43:34 2019 -0800
@@ -924,9 +924,9 @@
$ echo 'bloop' > s/foobar
$ hg revert --all --verbose --config 'ui.origbackuppath=.hg/origbackups'
reverting subrepo ../gitroot
- creating directory: $TESTTMP/tc/.hg/origbackups
- saving current version of foobar as .hg/origbackups/foobar
- $ ls .hg/origbackups
+ creating directory: $TESTTMP/tc/.hg/origbackups/s
+ saving current version of foobar as .hg/origbackups/s/foobar
+ $ ls .hg/origbackups/s
foobar
$ rm -rf .hg/origbackups