Mercurial > hg
view tests/test-mq-qfold @ 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 | 8cb81d75730c |
children |
line wrap: on
line source
#!/bin/sh echo "[extensions]" >> $HGRCPATH echo "mq=" >> $HGRCPATH echo "[mq]" >> $HGRCPATH echo "git=keep" >> $HGRCPATH filterdiff() { grep -v diff | \ sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \ -e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/" } filterpatch() { sed -e "s/\(# Parent \).*/\1/" } echo '% init' hg init repo cd repo echo a > a hg ci -Am adda echo a >> a hg qnew -f p1 echo b >> a hg qnew -f p2 echo c >> a hg qnew -f p3 echo '% fold in the middle of the queue' hg qpop p1 hg qdiff | filterdiff hg qfold p2 grep git .hg/patches/p1 && echo 'git patch found!' hg qser hg qdiff | filterdiff echo '% fold with local changes' echo d >> a hg qfold p3 hg diff -c . | filterdiff hg revert -a --no-backup echo '% fold git patch into a regular patch, expect git patch' echo a >> a hg qnew -f regular hg cp a aa hg qnew --git -f git hg qpop hg qfold git cat .hg/patches/regular | filterpatch hg qpop hg qdel regular echo '% fold regular patch into a git patch, expect git patch' hg cp a aa hg qnew --git -f git echo b >> aa hg qnew -f regular hg qpop hg qfold regular cat .hg/patches/git | filterpatch cd ..