Mercurial > hg > mercurial-crew-with-dirclash
view tests/test-mq-guards @ 5451:0a43875677b1
revlog: break up compression of large deltas
Python's zlib apparently makes an internal copy of strings passed to
compress(). To avoid this, compress strings 1M at a time, then join
them at the end if the result would be smaller than the original.
For initial commits of large but compressible files, this cuts peak
memory usage nearly in half.
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Thu, 11 Oct 2007 00:46:54 -0500 |
parents | 8369672060b5 |
children | 5b81c1cc6ebe |
line wrap: on
line source
#!/bin/sh echo "[extensions]" >> $HGRCPATH echo "mq=" >> $HGRCPATH hg init hg qinit echo x > x hg ci -Ama hg qnew a.patch echo a > a hg add a hg qrefresh hg qnew b.patch echo b > b hg add b hg qrefresh hg qnew c.patch echo c > c hg add c hg qrefresh hg qpop -a echo % should fail hg qguard does-not-exist.patch +bleh echo % should fail hg qguard +fail hg qpush echo % should guard a.patch hg qguard +a echo % should print +a hg qguard hg qpop hg qguard a.patch echo % should push b.patch hg qpush hg qpop hg qselect a echo % should push a.patch hg qpush hg qguard c.patch -a echo % should print -a hg qguard c.patch echo % should skip c.patch hg qpush -a echo % should display b.patch hg qtop hg qguard -n c.patch echo % should push c.patch hg qpush -a hg qpop -a hg qselect -n echo % should push all hg qpush -a hg qpop -a hg qguard a.patch +1 hg qguard b.patch +2 hg qselect 1 echo % should push a.patch, not b.patch hg qpush hg qpush hg qpop -a hg qselect 2 echo % should push b.patch hg qpush hg qpush -a # Used to be an issue with holes in the patch sequence # So, put one hole on the base and ask for topmost patch. hg qtop hg qpop -a hg qselect 1 2 echo % should push a.patch, b.patch hg qpush hg qpush hg qpop -a hg qguard a.patch +1 +2 -3 hg qselect 1 2 3 echo % list patches and guards hg qguard -l echo % list series hg qseries -v echo % list guards hg qselect echo % should push b.patch hg qpush hg qpush -a hg qselect -n --reapply echo % guards in series file: +1 +2 -3 hg qselect -s echo % should show c.patch hg qapplied hg qrename a.patch new.patch echo % should show : echo % new.patch: +1 +2 -3 echo % b.patch: +2 echo % c.patch: unguarded hg qguard -l hg qnew d.patch hg qpop echo % should show new.patch and b.patch as Guarded, c.patch as Applied echo % and d.patch as Unapplied hg qseries -v hg qguard d.patch +2 echo % new.patch, b.patch: Guarded. c.patch: Applied. d.patch: Guarded. hg qseries -v qappunappv() ( for command in qapplied "qapplied -v" qunapplied "qunapplied -v"; do echo % hg $command hg $command done ) hg qpop -a hg qguard -l qappunappv hg qselect 1 qappunappv hg qpush -a qappunappv hg qselect 2 qappunappv for patch in `hg qseries`; do echo % hg qapplied $patch hg qapplied $patch echo % hg qunapplied $patch hg qunapplied $patch done echo % hg qseries -m: only b.patch should be shown echo the guards file was not ignored in the past hg qdelete -k b.patch hg qseries -m