Mercurial > hg
view tests/test-incoming-outgoing @ 11638:79231258503b stable
transplant: crash if repo.commit() finds nothing to commit
(makes issue2135, issue2264 more obvious, but does nothing to fix
either one)
This seems to happen in two distinct cases:
* patch.patch() claims success but changes nothing (e.g.
the transplanted changeset adds an empty file that already
exists)
* patch.patch() makes changes, but repo.status() fails to report them
Both of these seem like bugs in other parts of Mercurial, so arguably
it's not transplant's job to detect the failure to commit. However:
* detecting the problem as soon as possible is desirable
* it prevents a more obscure crash later, in transplants.write()
* there might be other lurking (or future) bugs that cause
repo.commit() to do nothing
Also, in the case of issue2264 (source changesets silently dropped by
transplant), the only way to spot the problem currently is the crash
in transplants.write(). Failure to transplant a patch should abort
immediately, whether it's user error (patch does not apply) or a
Mercurial bug (e.g. repo.status() failing to report changes).
author | Greg Ward <greg-hg@gerg.ca> |
---|---|
date | Sun, 18 Jul 2010 21:29:29 -0400 |
parents | ace3cf2bc991 |
children |
line wrap: on
line source
#!/bin/sh mkdir test cd test hg init for i in 0 1 2 3 4 5 6 7 8; do echo $i >> foo hg commit -A -m $i -d "1000000 0" done hg verify hg serve -p $HGPORT -d --pid-file=hg.pid cat hg.pid >> $DAEMON_PIDS cd .. hg init new # http incoming hg -R new incoming http://localhost:$HGPORT/ | sed -e "s,:$HGPORT/,:\$HGPORT/," hg -R new incoming -r 4 http://localhost:$HGPORT/ | sed -e "s,:$HGPORT/,:\$HGPORT/," # local incoming hg -R new incoming test hg -R new incoming -r 4 test echo "% limit to 2 changesets" hg -R new incoming -l 2 test echo "% limit to 2 changesets, test with -p --git" hg -R new incoming -l 2 -p --git test # test with --bundle hg -R new incoming --bundle test.hg http://localhost:$HGPORT/ | sed -e "s,:$HGPORT/,:\$HGPORT/," hg -R new incoming --bundle test2.hg test # test the resulting bundles hg init temp hg init temp2 hg -R temp unbundle test.hg hg -R temp2 unbundle test2.hg hg -R temp tip hg -R temp2 tip rm -r temp temp2 new # test outgoing hg clone test test-dev cd test-dev for i in 9 10 11 12 13; do echo $i >> foo hg commit -A -m $i -d "1000000 0" done hg verify cd .. hg -R test-dev outgoing test echo "% limit to 3 changesets" hg -R test-dev outgoing -l 3 test hg -R test-dev outgoing http://localhost:$HGPORT/ | sed -e "s,:$HGPORT/,:\$HGPORT/," hg -R test-dev outgoing -r 11 http://localhost:$HGPORT/ | sed -e "s,:$HGPORT/,:\$HGPORT/,"