Mercurial > hg
view tests/test-children @ 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 | 8b90d763ea90 |
children | bb5ea66789e3 |
line wrap: on
line source
#!/bin/sh # test children command cat <<EOF >> $HGRCPATH [extensions] hgext.children= EOF echo "% init" hg init t cd t echo "% no working directory" hg children echo % setup echo 0 > file0 hg ci -qAm 0 -d '0 0' echo 1 > file1 hg ci -qAm 1 -d '1 0' echo 2 >> file0 hg ci -qAm 2 -d '2 0' hg co null echo 3 > file3 hg ci -qAm 3 -d '3 0' echo "% hg children at revision 3 (tip)" hg children hg co null echo "% hg children at nullrev (should be 0 and 3)" hg children hg co 1 echo "% hg children at revision 1 (should be 2)" hg children hg co 2 echo "% hg children at revision 2 (other head)" hg children for i in null 0 1 2 3; do echo "% hg children -r $i" hg children -r $i done echo "% hg children -r 0 file0 (should be 2)" hg children -r 0 file0 echo "% hg children -r 1 file0 (should be 2)" hg children -r 1 file0 hg co 0 echo "% hg children file0 at revision 0 (should be 2)" hg children file0