##// END OF EJS Templates
mq: pop/refresh: avoid losing revisions not managed by mq...
mq: pop/refresh: avoid losing revisions not managed by mq We already disallow committing on top of an mq revision exactly to avoid losing this new revision during a qpop/qrefresh, so this can be seen as an additional safety check. If this is not enough to fix issue844, it should at least prevent it from happening.

File last commit:

r5652:e90e72c6 default
r5980:dcda0c90 default
Show More
test-mq-missingfiles
69 lines | 1.2 KiB | text/plain | TextLexer
/ tests / test-mq-missingfiles
#!/bin/sh
# Test issue835:
# qpush fails immediately when patching a missing file, but
# remaining added files are still created empty which will
# trick a future qrefresh.
cat > writelines.py <<EOF
import sys
path = sys.argv[1]
args = sys.argv[2:]
assert (len(args) % 2) == 0
f = file(path, 'wb')
for i in xrange(len(args)/2):
count, s = args[2*i:2*i+2]
count = int(count)
s = s.decode('string_escape')
f.write(s*count)
f.close()
EOF
echo "[extensions]" >> $HGRCPATH
echo "mq=" >> $HGRCPATH
hg init normal
cd normal
python ../writelines.py b 10 'a\n'
hg ci -Am addb
echo a > a
python ../writelines.py b 2 'b\n' 10 'a\n' 2 'c\n'
echo c > c
hg add a c
hg qnew -f changeb
hg qpop
hg rm b
hg ci -Am rmb
echo % push patch with missing target
hg qpush
echo % display added files
cat a
cat c
cd ..
echo "[diff]" >> $HGRCPATH
echo "git=1" >> $HGRCPATH
hg init git
cd git
python ../writelines.py b 1 '\x00'
hg ci -Am addb
echo a > a
python ../writelines.py b 1 '\x01' 1 '\x00'
echo c > c
hg add a c
hg qnew -f changeb
hg qpop
hg rm b
hg ci -Am rmb
echo % push git patch with missing target
hg qpush 2>&1 | sed -e 's/b:.*/b: No such file or directory/'
hg st
echo % display added files
cat a
cat c
cd ..