Mercurial > hg
view tests/test-git-import @ 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 | 377d879e9d1b |
children | 77600d697d0e |
line wrap: on
line source
#!/bin/sh hg init a cd a echo % new file hg import -d "1000000 0" -mnew - <<EOF diff --git a/new b/new new file mode 100644 index 0000000..7898192 --- /dev/null +++ b/new @@ -0,0 +1 @@ +a EOF hg tip -q echo % new empty file hg import -d "1000000 0" -mempty - <<EOF diff --git a/empty b/empty new file mode 100644 EOF hg tip -q hg locate empty echo % chmod +x hg import -d "1000000 0" -msetx - <<EOF diff --git a/new b/new old mode 100644 new mode 100755 EOF hg tip -q test -x new || echo failed echo % copy hg import -d "1000000 0" -mcopy - <<EOF diff --git a/new b/copy old mode 100755 new mode 100644 similarity index 100% copy from new copy to copy diff --git a/new b/copyx similarity index 100% copy from new copy to copyx EOF hg tip -q if "$TESTDIR/hghave" -q execbit; then test -f copy -a ! -x copy || echo failed test -x copyx || echo failed else test -f copy || echo failed fi cat copy hg cat copy echo % rename hg import -d "1000000 0" -mrename - <<EOF diff --git a/copy b/rename similarity index 100% rename from copy rename to rename EOF hg tip -q hg locate echo % delete hg import -d "1000000 0" -mdelete - <<EOF diff --git a/copyx b/copyx deleted file mode 100755 index 7898192..0000000 --- a/copyx +++ /dev/null @@ -1 +0,0 @@ -a EOF hg tip -q hg locate test -f copyx && echo failed || true echo % regular diff hg import -d "1000000 0" -mregular - <<EOF diff --git a/rename b/rename index 7898192..72e1fe3 100644 --- a/rename +++ b/rename @@ -1 +1,5 @@ a +a +a +a +a EOF hg tip -q echo % copy and modify hg import -d "1000000 0" -mcopymod - <<EOF diff --git a/rename b/copy2 similarity index 80% copy from rename copy to copy2 index 72e1fe3..b53c148 100644 --- a/rename +++ b/copy2 @@ -1,5 +1,5 @@ a a -a +b a a EOF hg tip -q hg cat copy2 echo % rename and modify hg import -d "1000000 0" -mrenamemod - <<EOF diff --git a/copy2 b/rename2 similarity index 80% rename from copy2 rename to rename2 index b53c148..8f81e29 100644 --- a/copy2 +++ b/rename2 @@ -1,5 +1,5 @@ a a b -a +c a EOF hg tip -q hg locate copy2 hg cat rename2 echo % one file renamed multiple times hg import -d "1000000 0" -mmultirenames - <<EOF diff --git a/rename2 b/rename3 rename from rename2 rename to rename3 diff --git a/rename2 b/rename3-2 rename from rename2 rename to rename3-2 EOF hg tip -q hg log -vr. --template '{rev} {files} / {file_copies}\n' hg locate rename2 rename3 rename3-2 hg cat rename3 echo hg cat rename3-2 echo foo > foo hg add foo hg ci -m 'add foo' echo % binary files and regular patch hunks hg import -d "1000000 0" -m binaryregular - <<EOF diff --git a/binary b/binary new file mode 100644 index 0000000000000000000000000000000000000000..593f4708db84ac8fd0f5cc47c634f38c013fe9e4 GIT binary patch literal 4 Lc\${NkU|;|M00aO5 diff --git a/foo b/foo2 rename from foo rename to foo2 EOF hg tip -q cat foo2 hg manifest --debug | grep binary echo % many binary files hg import -d "1000000 0" -m multibinary - <<EOF diff --git a/mbinary1 b/mbinary1 new file mode 100644 index 0000000000000000000000000000000000000000..593f4708db84ac8fd0f5cc47c634f38c013fe9e4 GIT binary patch literal 4 Lc\${NkU|;|M00aO5 diff --git a/mbinary2 b/mbinary2 new file mode 100644 index 0000000000000000000000000000000000000000..112363ac1917b417ffbd7f376ca786a1e5fa7490 GIT binary patch literal 5 Mc\${NkU|\`?^000jF3jhEB EOF hg tip -q hg manifest --debug | grep mbinary echo % filenames with spaces hg import -d "1000000 0" -m spaces - <<EOF diff --git a/foo bar b/foo bar new file mode 100644 index 0000000..257cc56 --- /dev/null +++ b/foo bar @@ -0,0 +1 @@ +foo EOF hg tip -q cat "foo bar" echo % copy then modify the original file hg import -d "1000000 0" -m copy-mod-orig - <<EOF diff --git a/foo2 b/foo2 index 257cc56..fe08ec6 100644 --- a/foo2 +++ b/foo2 @@ -1 +1,2 @@ foo +new line diff --git a/foo2 b/foo3 similarity index 100% copy from foo2 copy to foo3 EOF hg tip -q cat foo3