|
|
#!/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
|
|
|
echo % display rejections
|
|
|
cat b.rej
|
|
|
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
|
|
|
echo % display rejections
|
|
|
cat b.rej
|
|
|
cd ..
|
|
|
|
|
|
echo % test push creating directory during git copy or rename
|
|
|
hg init missingdir
|
|
|
cd missingdir
|
|
|
echo a > a
|
|
|
hg ci -Am adda
|
|
|
mkdir d
|
|
|
hg copy a d/a2
|
|
|
hg mv a d/a
|
|
|
hg qnew -g -f patch
|
|
|
hg qpop
|
|
|
hg qpush
|
|
|
cd ..
|
|
|
|