##// END OF EJS Templates
patch: support diff data loss detection and upgrade...
patch: support diff data loss detection and upgrade In worst case, generating diff in upgrade mode can be two times more expensive than generating it in git mode directly: we may have to regenerate the whole diff again whenever a git feature is detected. Also, the first diff attempt is completely buffered instead of being streamed. That said, even without having profiled it yet, I am convinced we can fast-path the upgrade mode if necessary were it to be used in regular diff commands, and not only in mq where avoiding data loss is worth the price.

File last commit:

r10187:fcc15ba1 merge default
r10189:e451e599 default
Show More
test-mq-merge
82 lines | 1.6 KiB | text/plain | TextLexer
Patrick Mezard
Add test for issue 529 - "mq aborts when merging patch deleting files".
r4333 #!/bin/sh
# Test issue 529 - mq aborts when merging patch deleting files
rewrite_path()
{
sed -e 's:\\:/:g' -e 's:[^ ]*/t/::g'
}
Alexis S. L. Carvalho
mq: really remove undo after a qpush (and after a strip)...
r5527 checkundo()
{
if [ -f .hg/store/undo ]; then
echo ".hg/store/undo still exists after $1"
fi
}
Patrick Mezard
Add test for issue 529 - "mq aborts when merging patch deleting files".
r4333 echo "[extensions]" >> $HGRCPATH
Martin Geisler
tests: load with "ext =" instead of "hgext.ext ="
r10119 echo "mq =" >> $HGRCPATH
Patrick Mezard
Add test for issue 529 - "mq aborts when merging patch deleting files".
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
Alexis S. L. Carvalho
mq: really remove undo after a qpush (and after a strip)...
r5527 checkundo qsave
Patrick Mezard
Add test for issue 529 - "mq aborts when merging patch deleting files".
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
Alexis S. L. Carvalho
mq: really remove undo after a qpush (and after a strip)...
r5527 checkundo 'qpush -m'
Patrick Mezard
Add test for issue 529 - "mq aborts when merging patch deleting files".
r4333 hg manifest
Brendan Cully
Make mergepatch save queue now that qpush isn't.
r4437
# ensure status is correct after merge
hg qpop -a
Patrick Mezard
test-mq-merge: test mq merge and explicit patch queue
r6628 cd ..
# Classic MQ merge sequence *with an explicit named queue*
echo
echo % init t2
hg init t2
cd t2
Patrick Mezard
mq: preserve --git flag when merging patches...
r10185 echo '[diff]' > .hg/hgrc
echo 'nodates = 1' >> .hg/hgrc
Patrick Mezard
test-mq-merge: test mq merge and explicit patch queue
r6628 echo a > a
hg ci -Am init
Patrick Mezard
mq: preserve --git flag when merging patches...
r10185 echo b > a
Patrick Mezard
test-mq-merge: test mq merge and explicit patch queue
r6628 hg ci -m changea
hg up -C 0
Patrick Mezard
mq: preserve --git flag when merging patches...
r10185 hg cp a aa
Patrick Mezard
test-mq-merge: test mq merge and explicit patch queue
r6628 echo c >> a
Patrick Mezard
mq: preserve --git flag when merging patches...
r10185 hg qnew --git -f -e patcha
echo d >> a
hg qnew -d '0 0' -f -e patcha2
Patrick Mezard
test-mq-merge: test mq merge and explicit patch queue
r6628 echo % create the reference queue
hg qsave -c -e -n refqueue 2> /dev/null
hg up -C 1
echo % merge
Patrick Mezard
mq: preserve --git flag when merging patches...
r10185 HGMERGE=internal:other hg qpush -a -m -n refqueue 2>&1 | \
Patrick Mezard
test-mq-merge: test mq merge and explicit patch queue
r6628 sed 's/merging with queue at.*refqueue/merging with queue at refqueue/'
Patrick Mezard
mq: preserve --git flag when merging patches...
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!'
Patrick Mezard
test-mq-merge: test mq merge and explicit patch queue
r6628 cd ..