Mercurial > hg
view tests/test-mq-missingfiles @ 9954:d6a307719ccb stable
fix bug in prepush logic involving merge changesets
When creating new branches and merging them into existing ones, you would
sometimes be able to push some changesets (the existing branches) without using
--force, even when that creates a new head on the remote.
A test which triggers the error has been added.
author | Sune Foldager <cryo@cyanite.org> |
---|---|
date | Mon, 30 Nov 2009 14:58:52 +0100 |
parents | abd2bc899d86 |
children |
line wrap: on
line source
#!/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 ..