test-mq-merge
82 lines
| 1.6 KiB
| text/plain
|
TextLexer
/ tests / test-mq-merge
|
r4333 | #!/bin/sh | ||
# Test issue 529 - mq aborts when merging patch deleting files | ||||
rewrite_path() | ||||
{ | ||||
sed -e 's:\\:/:g' -e 's:[^ ]*/t/::g' | ||||
} | ||||
|
r5527 | checkundo() | ||
{ | ||||
if [ -f .hg/store/undo ]; then | ||||
echo ".hg/store/undo still exists after $1" | ||||
fi | ||||
} | ||||
|
r4333 | echo "[extensions]" >> $HGRCPATH | ||
|
r10119 | echo "mq =" >> $HGRCPATH | ||
|
r4333 | |||
# Commit two dummy files in "init" changeset | ||||
hg init t | ||||
cd t | ||||
echo a > a | ||||
echo b > b | ||||
hg ci -Am init | ||||
hg tag -l init | ||||
# Create a patch removing a | ||||
hg qnew rm_a | ||||
hg rm a | ||||
hg qrefresh -m "rm a" | ||||
# Save the patch queue so we can merge it later | ||||
hg qsave -c -e 2>&1 | rewrite_path | ||||
|
r5527 | checkundo qsave | ||
|
r4333 | |||
# Update b and commit in an "update" changeset | ||||
hg up -C init | ||||
echo b >> b | ||||
hg st | ||||
hg ci -m update | ||||
# Here, qpush used to abort with : | ||||
# The system cannot find the file specified => a | ||||
hg manifest | ||||
hg qpush -a -m 2>&1 | rewrite_path | ||||
|
r5527 | checkundo 'qpush -m' | ||
|
r4333 | hg manifest | ||
|
r4437 | |||
# ensure status is correct after merge | ||||
hg qpop -a | ||||
|
r6628 | cd .. | ||
# Classic MQ merge sequence *with an explicit named queue* | ||||
echo | ||||
echo % init t2 | ||||
hg init t2 | ||||
cd t2 | ||||
|
r10185 | echo '[diff]' > .hg/hgrc | ||
echo 'nodates = 1' >> .hg/hgrc | ||||
|
r6628 | echo a > a | ||
hg ci -Am init | ||||
|
r10185 | echo b > a | ||
|
r6628 | hg ci -m changea | ||
hg up -C 0 | ||||
|
r10185 | hg cp a aa | ||
|
r6628 | echo c >> a | ||
|
r10185 | hg qnew --git -f -e patcha | ||
echo d >> a | ||||
hg qnew -d '0 0' -f -e patcha2 | ||||
|
r6628 | echo % create the reference queue | ||
hg qsave -c -e -n refqueue 2> /dev/null | ||||
hg up -C 1 | ||||
echo % merge | ||||
|
r10185 | HGMERGE=internal:other hg qpush -a -m -n refqueue 2>&1 | \ | ||
|
r6628 | sed 's/merging with queue at.*refqueue/merging with queue at refqueue/' | ||
|
r10185 | echo % check patcha is still a git patch | ||
cat .hg/patches/patcha | ||||
echo % check patcha2 is still a regular patch | ||||
grep git .hg/patches/patcha2 && echo 'git patch found!' | ||||
|
r6628 | cd .. | ||