# HG changeset patch # User Martin von Zweigbergk # Date 2019-02-05 17:43:34 # Node ID 8f09edf6590b94c64ef19b9761b983fe1e058dc1 # Parent 31ae4129ff8a782b00fc60d5db58ca29e5abc539 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 diff --git a/mercurial/subrepo.py b/mercurial/subrepo.py --- a/mercurial/subrepo.py +++ b/mercurial/subrepo.py @@ -1824,15 +1824,15 @@ class gitsubrepo(abstractsubrepo): 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) diff --git a/tests/test-subrepo-git.t b/tests/test-subrepo-git.t --- a/tests/test-subrepo-git.t +++ b/tests/test-subrepo-git.t @@ -924,9 +924,9 @@ revert moves orig files to the right pla $ 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