Mercurial > hg
view tests/test-rebase-rename @ 11775:a8614c5a5e9a
subrepos: support remapping of .hgsub source paths
Given a .hgsub file containing
lib/libfoo = http://server/libfoo
the 'lib/libfoo' subrepo will be cloned from 'http://server/libfoo'.
This changeset introduces a remapping mechanism whereby the source
paths (the right-hand sides) in the .hgsub file can be remapped. This
subpaths section
[subpaths]
http://server = /local
will result in the 'lib/libfoo' subrepo being cloned from
'/local/libfoo' instead of from 'http://server/libfoo'.
The patterns (left-hand sides) are really regular expressions and the
replacement strings (right-hand sides) can refer to matched groups
using normal backreferences. This can be used for more complicated
replacements such as
[subpaths]
http://server/(.*)-hg/ = http://hg.server/\1/
which replaces 'http://server/foo-hg/' with 'http://hg.server/foo/'.
All patterns are applied in the order by which they are listed in the
config files.
author | Martin Geisler <mg@lazybytes.net> |
---|---|
date | Thu, 15 Jul 2010 18:10:05 +0200 |
parents | 2313dc4d9817 |
children |
line wrap: on
line source
#!/bin/sh . $TESTDIR/helpers.sh echo "[extensions]" >> $HGRCPATH echo "rebase=" >> $HGRCPATH echo "[diff]" >> $HGRCPATH echo "git=1" >> $HGRCPATH BASE=`pwd` hg init repo1 cd repo1 echo "a">a hg commit -Am "A" --date '0 0' echo "b"> b hg commit -Am "B" --date '1 0' hg up -C 0 hg mv a a-renamed hg commit -m 'rename A' --date '2 0' echo echo '% Rename is tracked' hg log -p -r tip --template '{rev}:{desc}\n' echo '% Rebase the revision containing the rename' hg rebase -s 2 -d 1 --quiet | cleanrebase echo echo '% Rename is not lost' hg log -p -r tip --template '{rev}:{desc}\n' cd $BASE rm -rf repo1 hg init repo1 cd repo1 echo "a">a hg commit -Am "A" --date '0 0' echo "b"> b hg commit -Am "B" --date '1 0' hg up -C 0 hg cp a a-copied hg commit -m 'copy A' --date '2 0' echo echo '% Copy is tracked' hg log -p -r tip --template '{rev}:{desc}\n' echo '% Rebase the revision containing the copy' hg rebase -s 2 -d 1 --quiet | cleanrebase echo echo '% Copy is not lost' hg log -p -r tip --template '{rev}:{desc}\n'