Mercurial > hg
view tests/test-walk @ 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 | cfb4a51da7d5 |
children |
line wrap: on
line source
#!/bin/sh debugwalk() { echo "hg debugwalk $@" hg debugwalk "$@" echo } chdir() { echo "cd $@" cd "$@" echo } mkdir t cd t hg init mkdir -p beans for b in kidney navy turtle borlotti black pinto; do echo $b > beans/$b done mkdir -p mammals/Procyonidae for m in cacomistle coatimundi raccoon; do echo $m > mammals/Procyonidae/$m done echo skunk > mammals/skunk echo fennel > fennel echo fenugreek > fenugreek echo fiddlehead > fiddlehead echo glob:glob > glob:glob hg addremove hg commit -m "commit #0" -d "1000000 0" debugwalk debugwalk -I. chdir mammals debugwalk debugwalk -X ../beans debugwalk -I '*k' debugwalk -I 'glob:*k' debugwalk -I 'relglob:*k' debugwalk -I 'relglob:*k' . debugwalk -I 're:.*k$' debugwalk -I 'relre:.*k$' debugwalk -I 'path:beans' debugwalk -I 'relpath:../beans' debugwalk . debugwalk -I. debugwalk Procyonidae chdir Procyonidae debugwalk . debugwalk .. chdir .. debugwalk ../beans debugwalk . debugwalk .hg debugwalk ../.hg chdir .. debugwalk -Ibeans debugwalk -I '{*,{b,m}*/*}k' debugwalk 'glob:mammals/../beans/b*' debugwalk '-X*/Procyonidae' mammals debugwalk path:mammals debugwalk .. debugwalk beans/../.. debugwalk .hg debugwalk beans/../.hg debugwalk beans/../.hg/data debugwalk beans/.hg # Don't know how to test absolute paths without always getting a false # error. #debugwalk `pwd`/beans #debugwalk `pwd`/.. debugwalk glob:\* debugwalk 'glob:**e' debugwalk 're:.*[kb]$' debugwalk path:beans/black debugwalk path:beans//black debugwalk relglob:Procyonidae debugwalk 'relglob:Procyonidae/**' debugwalk 'relglob:Procyonidae/**' fennel debugwalk beans 'glob:beans/*' debugwalk 'glob:mamm**' debugwalk 'glob:mamm**' fennel debugwalk 'glob:j*' debugwalk NOEXIST mkfifo fifo debugwalk fifo rm fenugreek debugwalk fenugreek hg rm fenugreek debugwalk fenugreek touch new debugwalk new mkdir ignored touch ignored/file echo '^ignored$' > .hgignore debugwalk ignored debugwalk ignored/file chdir .. debugwalk -R t t/mammals/skunk mkdir t2 chdir t2 debugwalk -R ../t ../t/mammals/skunk debugwalk --cwd ../t mammals/skunk