rebase: fix path auditing to audit path relative to repo root (issue5818) stable 4.8.1
authorMartin von Zweigbergk <martinvonz@google.com>
Tue, 20 Nov 2018 14:43:27 -0800
branchstable
changeset 40816 1c8c54cf9725
parent 40815 d10b1dc13431
child 40817 ee948f23bf2e
rebase: fix path auditing to audit path relative to repo root (issue5818) Before this patch, when rebasing a file called "foo/bar", we would check e.g. if "/foo" (i.e. rooted at the file system root) was a symlink. Differential Revision: https://phab.mercurial-scm.org/D5361
mercurial/context.py
tests/test-rebase-inmemory.t
--- a/mercurial/context.py	Tue Dec 04 08:56:43 2018 -0800
+++ b/mercurial/context.py	Tue Nov 20 14:43:27 2018 -0800
@@ -1848,8 +1848,8 @@
                 fail(path, component)
 
         # Test the other direction -- that this path from p2 isn't a directory
-        # in p1 (test that p1 doesn't any paths matching `path/*`).
-        match = matchmod.match('/', '', [path + '/'], default=b'relpath')
+        # in p1 (test that p1 doesn't have any paths matching `path/*`).
+        match = self.match(pats=[path + '/'], default=b'path')
         matches = self.p1().manifest().matches(match)
         mfiles = matches.keys()
         if len(mfiles) > 0:
--- a/tests/test-rebase-inmemory.t	Tue Dec 04 08:56:43 2018 -0800
+++ b/tests/test-rebase-inmemory.t	Tue Nov 20 14:43:27 2018 -0800
@@ -279,8 +279,7 @@
   created new head
   $ hg rebase -s 1 -d .
   rebasing 1:* "b" (glob)
-  abort: path '*/lib/b' traverses symbolic link '*/lib' (glob)
-  [255]
+  saved backup bundle to $TESTTMP/repo/.hg/strip-backup/*-rebase.hg (glob)
   $ cd ..
 
 Test dry-run rebasing