tests/test-paths.t
author Patrick Mezard <patrick@mezard.eu>
Thu, 09 Feb 2012 21:03:07 +0100
changeset 16096 b8be450638f6
parent 15567 8b84d040d9f9
child 16843 61f3ca8e4d39
permissions -rw-r--r--
revset: fix alias substitution recursion (issue3240) The revset aliases expansion worked like: expr = "some revset" for alias in aliases: expr = alias.process(expr) where "process" was replacing the alias with its *unexpanded* substitution, recursively. So it only worked when aliases were applied in proper dependency order. This patch rewrites the expansion process so all aliases are expanded recursively at every tree level, after parent alias rewriting and variable expansion.

  $ "$TESTDIR/hghave" no-msys || exit 80 # MSYS will translate /foo/bar as if it was a real file path

  $ hg init a
  $ hg clone a b
  updating to branch default
  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ cd a
  $ echo '[paths]' >> .hg/hgrc
  $ echo 'dupe = ../b' >> .hg/hgrc
  $ echo 'expand = $SOMETHING/bar' >> .hg/hgrc
  $ hg in dupe
  comparing with $TESTTMP/b (glob)
  no changes found
  [1]
  $ cd ..
  $ hg -R a in dupe
  comparing with $TESTTMP/b (glob)
  no changes found
  [1]
  $ cd a
  $ hg paths
  dupe = $TESTTMP/b (glob)
  expand = $TESTTMP/a/$SOMETHING/bar (glob)
  $ SOMETHING=foo hg paths
  dupe = $TESTTMP/b (glob)
  expand = $TESTTMP/a/foo/bar (glob)
  $ SOMETHING=/foo hg paths
  dupe = $TESTTMP/b (glob)
  expand = /foo/bar
  $ hg paths -q
  dupe
  expand
  $ hg paths dupe
  $TESTTMP/b (glob)
  $ hg paths -q dupe
  $ hg paths unknown
  not found!
  [1]
  $ hg paths -q unknown
  [1]
  $ cd ..

'file:' disables [paths] entries for clone destination

  $ cat >> $HGRCPATH <<EOF
  > [paths]
  > gpath1 = http://hg.example.com
  > EOF

  $ hg clone a gpath1
  abort: cannot create new http repository
  [255]

  $ hg clone a file:gpath1
  updating to branch default
  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ cd gpath1
  $ hg -q id
  000000000000