Mercurial > hg
view tests/test-mq-qrefresh.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 | 5f7e3f17aece |
children | b8801b58bbd8 |
line wrap: on
line source
% init % commit adding 1/base adding 2/base % qnew mqbase % qrefresh % qdiff diff -r b55ecdccb5cf 1/base --- a/1/base +++ b/1/base @@ -1,1 +1,1 @@ -base +patched diff -r b55ecdccb5cf 2/base --- a/2/base +++ b/2/base @@ -1,1 +1,1 @@ -base +patched % qdiff dirname diff -r b55ecdccb5cf 1/base --- a/1/base +++ b/1/base @@ -1,1 +1,1 @@ -base +patched diff -r b55ecdccb5cf 2/base --- a/2/base +++ b/2/base @@ -1,1 +1,1 @@ -base +patched % patch file contents mqbase diff -r b55ecdccb5cf 1/base --- a/1/base +++ b/1/base @@ -1,1 +1,1 @@ -base +patched diff -r b55ecdccb5cf 2/base --- a/2/base +++ b/2/base @@ -1,1 +1,1 @@ -base +patched % qrefresh 1 % qdiff diff -r b55ecdccb5cf 1/base --- a/1/base +++ b/1/base @@ -1,1 +1,1 @@ -base +patched diff -r b55ecdccb5cf 2/base --- a/2/base +++ b/2/base @@ -1,1 +1,1 @@ -base +patched % qdiff dirname diff -r b55ecdccb5cf 1/base --- a/1/base +++ b/1/base @@ -1,1 +1,1 @@ -base +patched diff -r b55ecdccb5cf 2/base --- a/2/base +++ b/2/base @@ -1,1 +1,1 @@ -base +patched % patch file contents mqbase diff -r b55ecdccb5cf 1/base --- a/1/base +++ b/1/base @@ -1,1 +1,1 @@ -base +patched % qrefresh . in subdir % qdiff diff -r b55ecdccb5cf 1/base --- a/1/base +++ b/1/base @@ -1,1 +1,1 @@ -base +patched diff -r b55ecdccb5cf 2/base --- a/2/base +++ b/2/base @@ -1,1 +1,1 @@ -base +patched % qdiff dirname diff -r b55ecdccb5cf 1/base --- a/1/base +++ b/1/base @@ -1,1 +1,1 @@ -base +patched diff -r b55ecdccb5cf 2/base --- a/2/base +++ b/2/base @@ -1,1 +1,1 @@ -base +patched % patch file contents mqbase diff -r b55ecdccb5cf 1/base --- a/1/base +++ b/1/base @@ -1,1 +1,1 @@ -base +patched % qrefresh in hg-root again % qdiff diff -r b55ecdccb5cf 1/base --- a/1/base +++ b/1/base @@ -1,1 +1,1 @@ -base +patched diff -r b55ecdccb5cf 2/base --- a/2/base +++ b/2/base @@ -1,1 +1,1 @@ -base +patched % qdiff dirname diff -r b55ecdccb5cf 1/base --- a/1/base +++ b/1/base @@ -1,1 +1,1 @@ -base +patched diff -r b55ecdccb5cf 2/base --- a/2/base +++ b/2/base @@ -1,1 +1,1 @@ -base +patched % patch file contents mqbase diff -r b55ecdccb5cf 1/base --- a/1/base +++ b/1/base @@ -1,1 +1,1 @@ -base +patched diff -r b55ecdccb5cf 2/base --- a/2/base +++ b/2/base @@ -1,1 +1,1 @@ -base +patched % qrefresh --short tests: % - add 1/base and 2/base one by one % -- qdiff output diff -r b55ecdccb5cf 1/base --- a/1/base +++ b/1/base @@ -1,1 +1,1 @@ -base +patched diff -r b55ecdccb5cf 2/base --- a/2/base +++ b/2/base @@ -1,1 +1,1 @@ -base +patched diff -r b55ecdccb5cf orphanchild --- /dev/null +++ b/orphanchild @@ -0,0 +1,1 @@ +orphan % -- patch file content mqbase diff -r b55ecdccb5cf 1/base --- a/1/base +++ b/1/base @@ -1,1 +1,1 @@ -base +patched diff -r b55ecdccb5cf 2/base --- a/2/base +++ b/2/base @@ -1,1 +1,1 @@ -base +patched A orphanchild ? base % -- diff shows what is not in patch diff --- /dev/null +++ b/orphanchild @@ -0,0 +1,1 @@ +orphan % - before starting exclusive tests 1/base 2/base % - exclude 2/base 1/base % -- status shows 2/base as dirty M 2/base A orphanchild ? base % - remove 1/base and add 2/base again but not orphanchild 2/base % - add 1/base with include filter - and thus remove 2/base from patch 1/base % create test repo adding a % capture changes diff --git a/a b/ab copy from a copy to ab --- a/a +++ b/ab @@ -1,1 +1,2 @@ a +b diff --git a/a b/ac copy from a copy to ac --- a/a +++ b/ac @@ -1,1 +1,2 @@ a +c % refresh and check changes again diff --git a/a b/ab copy from a copy to ab --- a/a +++ b/ab @@ -1,1 +1,2 @@ a +b diff --git a/a b/ac copy from a copy to ac --- a/a +++ b/ac @@ -1,1 +1,2 @@ a +c % issue1441 without git patches diff -r 000000000000 b --- /dev/null +++ b/b @@ -0,0 +1,1 @@ +a % issue1441 with git patches diff --git a/b b/b new file mode 100644 --- /dev/null +++ b/b @@ -0,0 +1,1 @@ +a