Mercurial > hg
view tests/test-bheads @ 11988:8380ed691df8
util: add an interpolate() function to for replacing multiple values
util.interpolate can be used to replace multiple items in a string all at once
(and optionally apply a function to the replacement), without worrying about
recursing:
>>> import util
>>> s = '$foo, $spam'
>>> util.interpolate(r'\$', { 'foo': 'bar', 'spam': 'eggs' }, s)
'bar, eggs'
>>> util.interpolate(r'\$', { 'foo': 'spam', 'spam': 'foo' }, s)
'spam, foo'
>>> util.interpolate(r'\$', { 'foo': 'spam', 'spam': 'foo' }, s, lambda s: s.upper())
'SPAM, FOO'
The patch also changes filemerge.py to use this new function.
author | Steve Losh <steve@stevelosh.com> |
---|---|
date | Wed, 18 Aug 2010 18:18:26 -0400 |
parents | 0a2762d83c53 |
children |
line wrap: on
line source
#!/bin/sh heads() { hg heads --template '{rev}: {desc|firstline|strip} ({branches})\n' "$@" } hg init a cd a echo 'root' >root hg add root hg commit -m "Adding root node" heads echo '-------' heads . echo '=======' echo 'a' >a hg add a hg branch a hg commit -m "Adding a branch" heads echo '-------' heads . echo '=======' hg update -C 0 echo 'b' >b hg add b hg branch b hg commit -m "Adding b branch" heads echo '-------' heads . echo '=======' echo 'bh1' >bh1 hg add bh1 hg commit -m "Adding b branch head 1" heads echo '-------' heads . echo '=======' hg update -C 2 echo 'bh2' >bh2 hg add bh2 hg commit -m "Adding b branch head 2" heads echo '-------' heads . echo '=======' hg update -C 2 echo 'bh3' >bh3 hg add bh3 hg commit -m "Adding b branch head 3" heads echo '-------' heads . echo '=======' hg merge 4 hg commit -m "Merging b branch head 2 and b branch head 3" heads echo '-------' heads . echo '=======' echo 'c' >c hg add c hg branch c hg commit -m "Adding c branch" heads echo '-------' heads . echo '=======' heads -r 3 . echo $? echo '-------' heads -r 2 . echo $? echo '-------' hg update -C 4 echo $? echo '-------' heads -r 3 . echo $? echo '-------' heads -r 2 . echo $? echo '-------' heads -r 7 . echo $? echo '=======' for i in 0 1 2 3 4 5 6 7; do hg update -C "$i" heads echo '-------' heads . echo '-------' done echo '=======' for i in a b c z; do heads "$i" echo '-------' done echo '=======' heads 0 1 2 3 4 5 6 7 echo '% topological heads' heads -t echo '______________' cd .. hg init newheadmsg cd newheadmsg echo '% created new head message' echo '% init: no msg' echo 1 > a hg ci -Am "a0: Initial root" echo 2 >> a hg ci -m "a1 (HN)" hg branch b echo 1 > b hg ci -Am "b2: Initial root for branch b" echo 2 >> b hg ci -m "b3 (HN)" echo '% case NN: msg' hg up -q null hg branch -f b echo 1 > bb hg ci -Am "b4 (NN): new topo root for branch b" echo '% case HN: no msg' echo 2 >> bb hg ci -m "b5 (HN)" echo '% case BN: msg' hg branch -f default echo 1 > aa hg ci -Am "a6 (BN): new branch root" echo '% case CN: msg' hg up -q 4 echo 3 >> bbb hg ci -Am "b7 (CN): regular new head" echo '% case BB: msg' hg up -q 4 hg merge -q 3 hg branch -f default hg ci -m "a8 (BB): weird new branch root" echo '% case CB: msg' hg up -q 4 hg merge -q 1 hg ci -m "b9 (CB): new head from branch merge" echo '% case HB: no msg' hg up -q 7 hg merge -q 6 hg ci -m "b10 (HB): continuing head from branch merge" echo '% case CC: msg' hg up -q 4 hg merge -q 2 hg ci -m "b11 (CC): new head from merge" echo '% case CH: no msg' hg up -q 2 hg merge -q 10 hg ci -m "b12 (CH): continuing head from merge" echo '% case HH: no msg' hg merge -q 3 hg ci -m "b12 (HH): merging two heads"