view tests/test-rebase-mq.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 c3d4ff03ec72
children 561ff8d9e4f0
line wrap: on
line source

1 files updated, 0 files merged, 0 files removed, 0 files unresolved
@  3 P1 tags: qtip tip f2.patch
|
o  2 P0 tags: f.patch qbase
|
| o  1 R1 tags:
|/
o  0 C1 tags: qparent


% Rebase - try to rebase on an applied mq patch
abort: cannot rebase onto an applied mq patch

% Rebase - generate a conflict
merging f
warning: conflicts during merge.
merging f failed!
abort: fix unresolved conflicts with hg resolve then run hg rebase --continue

% Fix the 1st conflict
merging f
warning: conflicts during merge.
merging f failed!
abort: fix unresolved conflicts with hg resolve then run hg rebase --continue

% Fix the 2nd conflict
saving bundle to 
adding branch
adding changesets
adding manifests
adding file changes
added 2 changesets with 2 changes to 1 files
rebase completed
@  3 P1 tags: qtip tip f2.patch
|
o  2 P0 tags: f.patch qbase
|
o  1 R1 tags: qparent
|
o  0 C1 tags:


% Update to qbase
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
% f correctly reflects the merge result
mq1r1
% And the patch is correct
# HG changeset patch
# User test
# Date
# Node ID
# Parent
P0

diff -r x -r y f
--- a/f
+++ b/f
@@ -1,1 +1,1 @@
-r1
+mq1r1

% Update to qtip
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
% f correctly reflects the merge result
mq1r1mq2
% And the patch is correct
# HG changeset patch
# User test
# Date
# Node ID
# Parent
P1

diff -r x -r y f
--- a/f
+++ b/f
@@ -1,1 +1,1 @@
-mq1r1
+mq1r1mq2

% Adding one git-style patch and one normal
patch queue now empty
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
% Git patch
P0 (git)

diff --git a/p b/p
new file mode 100644
--- /dev/null
+++ b/p
@@ -0,0 +1,1 @@
+mq1

% Normal patch
P1

diff -r x p
--- a/p
+++ b/p
@@ -1,1 +1,1 @@
-mq1
+mq2

% Rebase the applied mq patches
saving bundle to 
% And the patches are correct
% Git patch
# HG changeset patch
# User test
# Date
# Node ID
# Parent
P0 (git)

diff --git a/p b/p
new file mode 100644
--- /dev/null
+++ b/p
@@ -0,0 +1,1 @@
+mq1

% Normal patch
# HG changeset patch
# User test
# Date
# Node ID
# Parent
P1

--- a/p
+++ b/p
@@ -1,1 +1,1 @@
-mq1
+mq2