Ensure that absolutized paths from hgrc do not contain ../ segments.
authorJesse Glick <jesse.glick@sun.com>
Tue, 08 Jan 2008 22:40:51 -0500
changeset 5943 ffaf2419de44
parent 5937 d8878742a924
child 5944 5963c0ad2853
Ensure that absolutized paths from hgrc do not contain ../ segments.
mercurial/ui.py
tests/test-keyword.out
tests/test-paths
tests/test-paths.out
--- a/mercurial/ui.py	Fri Jan 25 16:18:49 2008 +0100
+++ b/mercurial/ui.py	Tue Jan 08 22:40:51 2008 -0500
@@ -204,7 +204,8 @@
                     pathsitems = items
                 for n, path in pathsitems:
                     if path and "://" not in path and not os.path.isabs(path):
-                        cdata.set("paths", n, os.path.join(root, path))
+                        cdata.set("paths", n,
+                                  os.path.normpath(os.path.join(root, path)))
 
         # update verbosity/interactive/report_untrusted settings
         if section is None or section == 'ui':
--- a/tests/test-keyword.out	Fri Jan 25 16:18:49 2008 +0100
+++ b/tests/test-keyword.out	Tue Jan 08 22:40:51 2008 -0500
@@ -293,7 +293,7 @@
 added 1 changesets with 3 changes to 3 files
 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
 % incoming
-comparing with test-keyword/Test-a/../Test
+comparing with test-keyword/Test
 searching for changes
 changeset:   1:0729690beff6
 tag:         tip
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-paths	Tue Jan 08 22:40:51 2008 -0500
@@ -0,0 +1,11 @@
+#!/bin/sh
+base=`pwd`
+hg init a
+hg clone a b
+cd a
+echo '[paths]' >> .hg/hgrc
+echo 'dupe = ../b' >> .hg/hgrc
+hg in dupe | sed "s!$base!<base>!g"
+cd ..
+hg -R a in dupe | sed "s!$base!<base>!g"
+true
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-paths.out	Tue Jan 08 22:40:51 2008 -0500
@@ -0,0 +1,5 @@
+0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+comparing with <base>/b
+no changes found
+comparing with <base>/b
+no changes found