diff --git a/mercurial/subrepo.py b/mercurial/subrepo.py --- a/mercurial/subrepo.py +++ b/mercurial/subrepo.py @@ -1050,7 +1050,7 @@ class svnsubrepo(abstractsubrepo): # update to a directory which has since been deleted and recreated. args.append('%s@%s' % (state[0], state[1])) status, err = self._svncommand(args, failok=True) - _sanitize(self._ui, self._path) + _sanitize(self._ui, self._ctx._repo.wjoin(self._path)) if not re.search('Checked out revision [0-9]+.', status): if ('is already a working copy for a different URL' in err and (self._wcchanged()[:2] == (False, False))): @@ -1343,7 +1343,7 @@ class gitsubrepo(abstractsubrepo): self._gitcommand(['reset', 'HEAD']) cmd.append('-f') self._gitcommand(cmd + args) - _sanitize(self._ui, self._path) + _sanitize(self._ui, self._abspath) def rawcheckout(): # no branch to checkout, check it out with no branch @@ -1392,7 +1392,7 @@ class gitsubrepo(abstractsubrepo): if tracking[remote] != self._gitcurrentbranch(): checkout([tracking[remote]]) self._gitcommand(['merge', '--ff', remote]) - _sanitize(self._ui, self._path) + _sanitize(self._ui, self._abspath) else: # a real merge would be required, just checkout the revision rawcheckout() @@ -1428,7 +1428,7 @@ class gitsubrepo(abstractsubrepo): self.get(state) # fast forward merge elif base != self._state[1]: self._gitcommand(['merge', '--no-commit', revision]) - _sanitize(self._ui, self._path) + _sanitize(self._ui, self._abspath) if self.dirty(): if self._gitstate() != revision: 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 @@ -592,11 +592,11 @@ Test sanitizing ".hg/hgrc" in subrepo c4069473b459cf27fd4d7c2f50c4346b4e936599 s $ cd .. + $ hg -R tc pull -q + $ hg -R tc update -q -C 3473d20bddcf 2>&1 | sort + warning: removing potentially hostile 'hgrc' in '$TESTTMP/tc/s/.hg' (glob) + warning: removing potentially hostile 'hgrc' in '$TESTTMP/tc/s/sub/.hg' (glob) $ cd tc - $ hg pull -q - $ hg update -q -C 3473d20bddcf 2>&1 | sort - warning: removing potentially hostile 'hgrc' in 's/.hg' (glob) - warning: removing potentially hostile 'hgrc' in 's/sub/.hg' (glob) $ hg parents -q 8:3473d20bddcf $ grep ' s$' .hgsubstate @@ -642,10 +642,12 @@ additional test for "git merge --ff" rou $ cat s/sub/.hg/hgrc cat: s/sub/.hg/hgrc: No such file or directory [1] - $ hg pull -q - $ hg update -q -C ed23f7fe024e 2>&1 | sort - warning: removing potentially hostile 'hgrc' in 's/.hg' (glob) - warning: removing potentially hostile 'hgrc' in 's/sub/.hg' (glob) + $ cd .. + $ hg -R tc pull -q + $ hg -R tc update -q -C ed23f7fe024e 2>&1 | sort + warning: removing potentially hostile 'hgrc' in '$TESTTMP/tc/s/.hg' (glob) + warning: removing potentially hostile 'hgrc' in '$TESTTMP/tc/s/sub/.hg' (glob) + $ cd tc $ hg parents -q 9:ed23f7fe024e $ grep ' s$' .hgsubstate diff --git a/tests/test-subrepo-svn.t b/tests/test-subrepo-svn.t --- a/tests/test-subrepo-svn.t +++ b/tests/test-subrepo-svn.t @@ -663,10 +663,10 @@ Test sanitizing ".hg/hgrc" in subrepo 16 s $ cd .. + $ hg -R tc pull -u -q 2>&1 | sort + warning: removing potentially hostile 'hgrc' in '$TESTTMP/sub/tc/s/.hg' (glob) + warning: removing potentially hostile 'hgrc' in '$TESTTMP/sub/tc/s/sub/.hg' (glob) $ cd tc - $ hg pull -u -q 2>&1 | sort - warning: removing potentially hostile 'hgrc' in 's/.hg' (glob) - warning: removing potentially hostile 'hgrc' in 's/sub/.hg' (glob) $ grep ' s$' .hgsubstate 16 s $ cat s/.hg/hgrc