Mercurial > hg
view tests/test-mq-guards.out @ 8849:80cc4b1a62d0
compare grep result between target and its parent
I found that typical case is that grep target is added at (*) revision
in the tree shown below.
+--- 1(*) --- 3
0
+--- 2 ------ 4
Now, I expect 'hg grep --all' to show only rev:1 which is first
appearance of target line.
But 'hg grep --all' will tell:
target line dis-appeared at 3 => 4
target line appeared at 2 => 3
target line dis-appeared at 1 => 2
target line appeared at 0 => 1
because current 'hg grep' implementation compares not between target
revision and its parent, but between neighbor revisions in walkthrough
order.
I checked performance of this patch by "hg grep --follow --all
walkchangerevs" on whole Mercurial repo, and patched version could
complete as fast as un-patched one.
author | FUJIWARA Katsunori <foozy@lares.dti.ne.jp> |
---|---|
date | Tue, 19 May 2009 16:49:54 +0900 |
parents | fb32ae9c76e7 |
children | 561ff8d9e4f0 |
line wrap: on
line source
adding x patch queue now empty % should fail abort: no patch named does-not-exist.patch % should fail abort: no patches applied applying a.patch now at: a.patch % should guard a.patch % should print +a a.patch: +a patch queue now empty % should fail cannot push 'a.patch' - guarded by ['+a'] a.patch: +a % should push b.patch applying b.patch now at: b.patch patch queue now empty % test selection of an empty guard abort: guard cannot be an empty string number of unguarded, unapplied patches has changed from 2 to 3 % should push a.patch applying a.patch now at: a.patch % should print -a c.patch: -a % should skip c.patch applying b.patch skipping c.patch - guarded by '-a' now at: b.patch % should display b.patch b.patch % should push c.patch applying c.patch now at: c.patch patch queue now empty guards deactivated number of unguarded, unapplied patches has changed from 3 to 2 % should push all applying b.patch applying c.patch now at: c.patch patch queue now empty number of unguarded, unapplied patches has changed from 1 to 2 % should push a.patch, not b.patch applying a.patch now at: a.patch applying c.patch now at: c.patch patch queue now empty % should push b.patch applying b.patch now at: b.patch applying c.patch now at: c.patch c.patch patch queue now empty number of unguarded, unapplied patches has changed from 2 to 3 % should push a.patch, b.patch applying a.patch now at: a.patch applying b.patch now at: b.patch patch queue now empty number of unguarded, unapplied patches has changed from 3 to 2 % list patches and guards a.patch: +1 +2 -3 b.patch: +2 c.patch: unguarded % list series 0 G a.patch 1 U b.patch 2 U c.patch % list guards 1 2 3 % should push b.patch applying b.patch now at: b.patch applying c.patch now at: c.patch guards deactivated popping guarded patches patch queue now empty reapplying unguarded patches applying c.patch now at: c.patch % guards in series file: +1 +2 -3 +1 +2 -3 % should show c.patch c.patch % should show : % new.patch: +1 +2 -3 % b.patch: +2 % c.patch: unguarded new.patch: +1 +2 -3 b.patch: +2 c.patch: unguarded now at: c.patch % should show new.patch and b.patch as Guarded, c.patch as Applied % and d.patch as Unapplied 0 G new.patch 1 G b.patch 2 A c.patch 3 U d.patch % new.patch, b.patch: Guarded. c.patch: Applied. d.patch: Guarded. 0 G new.patch 1 G b.patch 2 A c.patch 3 G d.patch patch queue now empty new.patch: +1 +2 -3 b.patch: +2 c.patch: unguarded d.patch: +2 % hg qapplied % hg qapplied -v % hg qunapplied c.patch % hg qunapplied -v 0 G new.patch 1 G b.patch 2 U c.patch 3 G d.patch number of unguarded, unapplied patches has changed from 1 to 2 % hg qapplied % hg qapplied -v % hg qunapplied new.patch c.patch % hg qunapplied -v 0 U new.patch 1 G b.patch 2 U c.patch 3 G d.patch applying new.patch skipping b.patch - guarded by ['+2'] applying c.patch skipping d.patch - guarded by ['+2'] now at: c.patch % hg qapplied new.patch c.patch % hg qapplied -v 0 A new.patch 1 G b.patch 2 A c.patch % hg qunapplied % hg qunapplied -v 3 G d.patch number of unguarded, unapplied patches has changed from 0 to 1 number of guarded, applied patches has changed from 1 to 0 % hg qapplied new.patch c.patch % hg qapplied -v 0 A new.patch 1 U b.patch 2 A c.patch % hg qunapplied d.patch % hg qunapplied -v 3 U d.patch % hg qapplied new.patch new.patch % hg qunapplied new.patch b.patch d.patch % hg qapplied b.patch new.patch % hg qunapplied b.patch d.patch % hg qapplied c.patch new.patch c.patch % hg qunapplied c.patch d.patch % hg qapplied d.patch new.patch c.patch % hg qunapplied d.patch % hg qseries -m: only b.patch should be shown the guards file was not ignored in the past b.patch