##// END OF EJS Templates
Add patch.eol to ignore EOLs when patching (issue1019)...
Add patch.eol to ignore EOLs when patching (issue1019) The intent is to fix many issues involving patching when win32ext is enabled. With win32ext, the working directory and repository files EOLs are not the same which means that patches made on a non-win32ext host do not apply cleanly because of EOLs discrepancies. A theorically correct approach would be transform either the patched file or the patch content with the encoding/decoding filters used by win32ext. This solution is tricky to implement and invasive, instead we prefer to address the win32ext case, by offering a way to ignore input EOLs when patching and rewriting them when saving the patched result.

File last commit:

r8518:3f4f14ea default
r8810:ac92775b default
Show More
test-transplant
136 lines | 2.3 KiB | text/plain | TextLexer
#!/bin/sh
cat <<EOF >> $HGRCPATH
[extensions]
transplant=
EOF
hg init t
cd t
echo r1 > r1
hg ci -Amr1 -d'0 0'
echo r2 > r2
hg ci -Amr2 -d'1 0'
hg up 0
echo b1 > b1
hg ci -Amb1 -d '0 0'
echo b2 > b2
hg ci -Amb2 -d '1 0'
echo b3 > b3
hg ci -Amb3 -d '2 0'
hg log --template '{rev} {parents} {desc}\n'
hg clone . ../rebase
cd ../rebase
hg up -C 1
echo '% rebase b onto r1'
hg transplant -a -b tip
hg log --template '{rev} {parents} {desc}\n'
hg clone ../t ../prune
cd ../prune
hg up -C 1
echo '% rebase b onto r1, skipping b2'
hg transplant -a -b tip -p 3
hg log --template '{rev} {parents} {desc}\n'
echo '% remote transplant'
hg clone -r 1 ../t ../remote
cd ../remote
hg transplant --log -s ../t 2 4
hg log --template '{rev} {parents} {desc}\n'
echo '% skip previous transplants'
hg transplant -s ../t -a -b 4
hg log --template '{rev} {parents} {desc}\n'
echo '% skip local changes transplanted to the source'
echo b4 > b4
hg ci -Amb4 -d '3 0'
hg clone ../t ../pullback
cd ../pullback
hg transplant -s ../remote -a -b tip
echo '% remote transplant with pull'
hg -R ../t serve -p $HGPORT -d --pid-file=../t.pid
cat ../t.pid >> $DAEMON_PIDS
hg clone -r 0 ../t ../rp
cd ../rp
hg transplant -s http://localhost:$HGPORT/ 2 4
hg log --template '{rev} {parents} {desc}\n'
echo '% transplant --continue'
hg init ../tc
cd ../tc
cat <<EOF > foo
foo
bar
baz
EOF
echo toremove > toremove
hg ci -Amfoo
cat <<EOF > foo
foo2
bar2
baz2
EOF
rm toremove
echo added > added
hg ci -Amfoo2
echo bar > bar
hg ci -Ambar
echo bar2 >> bar
hg ci -mbar2
hg up 0
echo foobar > foo
hg ci -mfoobar
hg transplant 1:3
# transplant -c shouldn't use an old changeset
hg up -C
rm added
hg transplant 1
hg transplant --continue
hg transplant 1:3
hg locate
cd ..
# Test transplant --merge (issue 1111)
echo % test transplant merge
hg init t1111
cd t1111
echo a > a
hg ci -Am adda
echo b >> a
hg ci -m appendb
echo c >> a
hg ci -m appendc
hg up -C 0
echo d >> a
hg ci -m appendd
echo % tranplant
hg transplant -m 1
cd ..
echo '% test transplant into empty repository'
hg init empty
cd empty
hg transplant -s ../t -b tip -a
cd ..
echo '% test filter'
hg init filter
cd filter
cat <<'EOF' >test-filter
#!/bin/sh
sed 's/r1/r2/' $1 > $1.new
mv $1.new $1
EOF
chmod +x test-filter
hg transplant -s ../t -b tip -a --filter ./test-filter |\
sed 's/filtering.*/filtering/g'
hg log --template '{rev} {parents} {desc}\n'