[PATCH 3 of 6] subrepo-git: use an official origvfs when appropriate

Boris Feld boris.feld at octobus.net
Mon Nov 26 18:22:45 UTC 2018


# HG changeset patch
# User Boris Feld <boris.feld at octobus.net>
# Date 1542913288 -3600
#      Thu Nov 22 20:01:28 2018 +0100
# Node ID 3d8d2de85c9afc06b7aad740aa1ad2c817d18dfa
# Parent  a83de6825f6aac64efc059e6224225b073d441f4
# EXP-Topic vfs.audit-rename
# Available At https://bitbucket.org/octobus/mercurial-devel/
#              hg pull https://bitbucket.org/octobus/mercurial-devel/ -r 3d8d2de85c9a
subrepo-git: use an official origvfs when appropriate

The origvfs has the auditor properly set and can move file without issue.

The current code is currently working without errors because rename are not
audited, yet.

diff --git a/mercurial/subrepo.py b/mercurial/subrepo.py
--- a/mercurial/subrepo.py
+++ b/mercurial/subrepo.py
@@ -1806,11 +1806,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)
                 self.ui.note(_('saving current version of %s as %s\n') %
                         (name, bakname))
-                self.wvfs.rename(name, bakname)
+                name = self.wvfs.join(name)
+                origvfs.rename(name, bakname)
 
         if not opts.get(r'dry_run'):
             self.get(substate, overwrite=True)



More information about the Mercurial-devel mailing list