Mercurial > hg
view tests/test-glog @ 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 | 613ac2856535 |
children | d12e9b40e444 |
line wrap: on
line source
#!/bin/sh # @ (34) head # | # | o (33) head # | | # o | (32) expand # |\ \ # | o \ (31) expand # | |\ \ # | | o \ (30) expand # | | |\ \ # | | | o | (29) regular commit # | | | | | # | | o | | (28) merge zero known # | | |\ \ \ # o | | | | | (27) collapse # |/ / / / / # | | o---+ (26) merge one known; far right # | | | | | # +---o | | (25) merge one known; far left # | | | | | # | | o | | (24) merge one known; immediate right # | | |\| | # | | o | | (23) merge one known; immediate left # | |/| | | # +---o---+ (22) merge two known; one far left, one far right # | | / / # o | | | (21) expand # |\ \ \ \ # | o---+-+ (20) merge two known; two far right # | / / / # o | | | (19) expand # |\ \ \ \ # +---+---o (18) merge two known; two far left # | | | | # | o | | (17) expand # | |\ \ \ # | | o---+ (16) merge two known; one immediate right, one near right # | | |/ / # o | | | (15) expand # |\ \ \ \ # | o-----+ (14) merge two known; one immediate right, one far right # | |/ / / # o | | | (13) expand # |\ \ \ \ # +---o | | (12) merge two known; one immediate right, one far left # | | |/ / # | o | | (11) expand # | |\ \ \ # | | o---+ (10) merge two known; one immediate left, one near right # | |/ / / # o | | | (9) expand # |\ \ \ \ # | o-----+ (8) merge two known; one immediate left, one far right # |/ / / / # o | | | (7) expand # |\ \ \ \ # +---o | | (6) merge two known; one immediate left, one far left # | |/ / / # | o | | (5) expand # | |\ \ \ # | | o | | (4) merge two known; one immediate left, one immediate right # | |/|/ / # | o / / (3) collapse # |/ / / # o / / (2) collapse # |/ / # o / (1) collapse # |/ # o (0) root "$TESTDIR/hghave" no-outer-repo || exit 80 set -e commit() { rev=$1 msg=$2 shift 2 if [ "$#" -gt 0 ]; then hg debugsetparents "$@" fi echo $rev > a hg commit -Aqd "$rev 0" -m "($rev) $msg" } echo "[extensions]" >> $HGRCPATH echo "graphlog=" >> $HGRCPATH echo % init hg init repo cd repo echo % empty repo hg glog echo % building tree commit 0 "root" commit 1 "collapse" 0 commit 2 "collapse" 1 commit 3 "collapse" 2 commit 4 "merge two known; one immediate left, one immediate right" 1 3 commit 5 "expand" 3 4 commit 6 "merge two known; one immediate left, one far left" 2 5 commit 7 "expand" 2 5 commit 8 "merge two known; one immediate left, one far right" 0 7 commit 9 "expand" 7 8 commit 10 "merge two known; one immediate left, one near right" 0 6 commit 11 "expand" 6 10 commit 12 "merge two known; one immediate right, one far left" 1 9 commit 13 "expand" 9 11 commit 14 "merge two known; one immediate right, one far right" 0 12 commit 15 "expand" 13 14 commit 16 "merge two known; one immediate right, one near right" 0 1 commit 17 "expand" 12 16 commit 18 "merge two known; two far left" 1 15 commit 19 "expand" 15 17 commit 20 "merge two known; two far right" 0 18 commit 21 "expand" 19 20 commit 22 "merge two known; one far left, one far right" 18 21 commit 23 "merge one known; immediate left" 1 22 commit 24 "merge one known; immediate right" 0 23 commit 25 "merge one known; far left" 21 24 commit 26 "merge one known; far right" 18 25 commit 27 "collapse" 21 commit 28 "merge zero known" 1 26 commit 29 "regular commit" 0 commit 30 "expand" 28 29 commit 31 "expand" 21 30 commit 32 "expand" 27 31 commit 33 "head" 18 commit 34 "head" 32 echo % glog -q hg glog -q echo % glog hg glog echo % file glog hg glog a echo % unused arguments hg glog -q foo bar || echo failed echo % from outer space cd .. hg glog -l1 repo hg glog -l1 repo/a hg glog -l1 repo/missing echo % file log with revs != cset revs hg init flog cd flog echo one >one hg add one hg commit -mone echo two >two hg add two hg commit -mtwo echo more >two hg commit -mmore hg glog two echo % incoming and outgoing cd .. hg clone -U -r31 repo repo2 cd repo2 hg incoming -q --graph cd .. hg -R repo outgoing --graph repo2