mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 16:57:49 +03:00
4bd17cf5de
Reported and explained by Peter Arrenbrecht <peter.arrenbrecht@gmail.com>. Following file additions were skipped but empty files were still created. This situation could lead to qrefresh losing patch information.
70 lines
1.2 KiB
Bash
Executable File
70 lines
1.2 KiB
Bash
Executable File
#!/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 ..
|
|
|