Commits

ZyX_I  committed ab558ff

@aurum/log: Added svn log style

  • Participants
  • Parent commits 2a747a9

Comments (0)

Files changed (4)

File doc/aurum.txt

      function does not accept timezone argument and I do not think it is worth 
      implementing in vimscript.
 
+svn                                                          *aurum-style-svn*
+    Svn-like style: >
+      r1 | Bob <bob@example.com> | 2011-01-01 00:00:00 (Sun, 01 Jan 2011) | 3 lines
+
+      Guess bar is better name for baz
+      And barbaz is not worse
+
 ==============================================================================
 7. Record mode                                                  *aurum-record*
 

File plugin/aurum/log.vim

             \'gitoneline': "$hex $summary\n".
             \              "$hide#$# $stat\n".
             \              "$hide#:#$patch",
+            \'svn':     'r$rev | $user | $time#%Y-%m-%d %H:%M:%S (%a\, %d %b %Y)# | '.
+            \               '$description#synreg:1 line\\|[1-9]\\d* lines,'.
+            \                            'expr:[substitute((len(split(@@@\, "\\n"\, 1))+1)." lines"\, '.
+            \                                             '"^1 .*"\, "1 line"\, "")]#'."\n".
+            \           "$empty\n".
+            \           "$description\n".
+            \           "$empty\n".
+            \           "$hide#$# $stat\n".
+            \           "$hide#:#$patch\n",
         \}
 "▶2 s:kwexpr
 " TODO Add bisection status

File test/cmd-log-styles.in

 :ST cdescr
 :ST git
 :ST gitoneline
+:ST svn
 :source addmessages.vim

File test/cmd-log-styles.ok

 |  :+)
 |  :+tar cJf testrepo.tar.xz testrepo
 |  :
+{{{1 svn
+@  r26 | A <a@example.com> | 2002-02-11 05:43:00 (Пнд, 11 Фев 2002) | 3 lines
+|  
+|  Added .hgignore
+|  Added directory/file
+|  
+|  $   .hgignore      | 2 0
+|  $   directory/file | 1 0
+|  $ 2 files changed, 3 insertions, 0 deletions
+|  :diff -r d8140c0b7b0b -r 504f74154456 .hgignore
+|  :--- /dev/null
+|  :+++ b/.hgignore
+|  :@@ -0,0 +1,2 @@
+|  :+syntax: glob
+|  :+ignored*
+|  :diff -r d8140c0b7b0b -r 504f74154456 directory/file
+|  :--- /dev/null
+|  :+++ b/directory/file
+|  :@@ -0,0 +1,1 @@
+|  :+File contents
+|  :
+o    r25 | C <c@example.gov> | 2002-02-11 05:00:00 (Пнд, 11 Фев 2002) | 2 lines
+|\   
+| |  Merge
+| |  
+| |  $   elines.lst     |   0 19
+| |  $   emerged.lst    | 127  0
+| |  $   flines.lst     |   0  5
+| |  $   glines.lst     |  73  0
+| |  $   glinescopy.lst |  83  0
+| |  $ 5 files changed, 283 insertions, 24 deletions
+| |  :diff -r e021c634413b -r d8140c0b7b0b elines.lst
+| |  :--- a/elines.lst
+| |  :+++ /dev/null
+| |  :@@ -1,19 +0,0 @@
+| |  :-    hg init testrepo
+| |  :-    cd testrepo
+| |  :-    cp ../createrepo.zsh .
+| |  :-    hg commit -A -m 'Added «createrepo.zsh»' \
+| |  :-    hg mv createrepo.zsh crepo.zsh
+| |  :-    hg commit -A -m 'Renamed «createrepo.zsh» to «crepo.zsh»' \
+| |  :-    perl -p -i -e 'tr/{}/{}/' crepo.zsh
+| |  :-    hg commit -m $'Replaced\n    {\n        ...\n    }\nwith\n    {\n        ...\n    }' \
+| |  :-    hg mv crepo.zsh chgrepo.zsh
+| |  :-    hg commit -A -m 'Renamed «crepo.zsh» to «chgrepo.zsh»' \
+| |  :-    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > hglines.lst
+| |  :-    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > datelines.lst
+| |  :-    cat chgrepo.zsh | grep 'd' > dlines.lst
+| |  :-    cat chgrepo.zsh | grep 'a' > alines.lst
+| |  :-    cat alines.lst | grep 'b' > ablines.lst
+| |  :-    cat chgrepo.zsh | grep 'b' > blines.lst
+| |  :-    cat chgrepo.zsh | sort | grep 'c' > clines.lst
+| |  :-    cat chgrepo.zsh | perl -p -i -e 'undef $_ if /^    hg /' > nohglines.lst
+| |  :-tar cJf testrepo.tar.xz testrepo
+| |  :diff -r e021c634413b -r d8140c0b7b0b emerged.lst
+| |  :--- /dev/null
+| |  :+++ b/emerged.lst
+| |  :@@ -0,0 +1,127 @@
+| |  :+<<<<<<< local
+| |  :+=======
+| |  :+emulate -L zsh
+| |  :+set -e
+| |  :+local A='A <a@example.com>'
+| |  :+local B='B <b@example.org>'
+| |  :+local C='C <c@example.gov>'
+| |  :+    set -e
+| |  :+>>>>>>> other
+| |  :+    hg init testrepo
+| |  :+    cd testrepo
+| |  :+    cp ../createrepo.zsh .
+| |  :+<<<<<<< local
+| |  :+=======
+| |  :+    # XXX Date test will work only till 2099
+| |  :+>>>>>>> other
+| |  :+    hg commit -A -m 'Added «createrepo.zsh»' \
+| |  :+<<<<<<< local
+| |  :+=======
+| |  :+        --date '1999-01-02 5:20' --user $A
+| |  :+>>>>>>> other
+| |  :+    hg mv createrepo.zsh crepo.zsh
+| |  :+    hg commit -A -m 'Renamed «createrepo.zsh» to «crepo.zsh»' \
+| |  :+<<<<<<< local
+| |  :+=======
+| |  :+        --date '2000-01-05 7:30' --user $A
+| |  :+>>>>>>> other
+| |  :+    perl -p -i -e 'tr/{}/{}/' crepo.zsh
+| |  :+    hg commit -m $'Replaced\n    {\n        ...\n    }\nwith\n    {\n        ...\n    }' \
+| |  :+<<<<<<< local
+| |  :+=======
+| |  :+        --date '2000-01-15 15:00' --user $B
+| |  :+>>>>>>> other
+| |  :+    hg mv crepo.zsh chgrepo.zsh
+| |  :+    hg commit -A -m 'Renamed «crepo.zsh» to «chgrepo.zsh»' \
+| |  :+<<<<<<< local
+| |  :+=======
+| |  :+        --date '2000-02-01 14:00' --user $B
+| |  :+>>>>>>> other
+| |  :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > hglines.lst
+| |  :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > datelines.lst
+| |  :+<<<<<<< local
+| |  :+=======
+| |  :+    hg commit -A -m 'Added «hglines.lst» and «datelines.lst»' \
+| |  :+        --date '2000-05-10 4:23' --user $A
+| |  :+>>>>>>> other
+| |  :+    cat chgrepo.zsh | grep 'd' > dlines.lst
+| |  :+<<<<<<< local
+| |  :+=======
+| |  :+    hg commit -A -m 'Added dlines.lst' \
+| |  :+        --date '2000-11-01 13:24' --user $B
+| |  :+>>>>>>> other
+| |  :+    cat chgrepo.zsh | grep 'a' > alines.lst
+| |  :+<<<<<<< local
+| |  :+=======
+| |  :+    hg commit -A -m 'Added alines.lst' \
+| |  :+        --date '2000-11-02 5:44' --user $A
+| |  :+>>>>>>> other
+| |  :+    cat alines.lst | grep 'b' > ablines.lst
+| |  :+<<<<<<< local
+| |  :+=======
+| |  :+    hg commit -A -m 'Added ablines.lst' \
+| |  :+        --date '2000-11-02 14:13' --user $B
+| |  :+    hg tag ablines \
+| |  :+        --date '2000-11-02 14:14' --user $B
+| |  :+    hg update default
+| |  :+    hg merge -r ablines
+| |  :+    hg commit -m 'Merge from C' \
+| |  :+        --date '2001-01-01 00:00' --user $C
+| |  :+    hg update C
+| |  :+>>>>>>> other
+| |  :+    cat chgrepo.zsh | grep 'b' > blines.lst
+| |  :+<<<<<<< local
+| |  :+=======
+| |  :+    hg commit -A -m 'Added blines.lst' \
+| |  :+        --date '2001-02-01 05:18' --user $A
+| |  :+    hg tag blines \
+| |  :+        --date '2001-02-01 05:19' --user $A
+| |  :+    hg update -r -2
+| |  :+>>>>>>> other
+| |  :+    cat chgrepo.zsh | sort | grep 'c' > clines.lst
+| |  :+<<<<<<< local
+| |  :+=======
+| |  :+    hg commit -A -m 'Added clines.lst' \
+| |  :+        --date '2001-02-01 14:56' --user $B
+| |  :+    hg tag clines \
+| |  :+        --date '2001-02-01 14:56:52' --user $B
+| |  :+    hg update A
+| |  :+    hg merge -r B
+| |  :+    hg commit -m 'Merge from B' \
+| |  :+        --date '2002-01-01 00:00' --user $C
+| |  :+    hg merge -r clines
+| |  :+    hg commit -m 'Merge from C:2' \
+| |  :+        --date '2002-01-01 00:00:15' --user $C
+| |  :+    hg update default
+| |  :+    hg merge -r blines
+| |  :+    hg commit -m 'Merge from C:1' \
+| |  :+        --date '2002-01-01 00:00:30' --user $C
+| |  :+    hg merge -r A
+| |  :+    hg commit -m 'Merge from A' \
+| |  :+        --date '2002-01-01 00:00:45' --user $C
+| |  :+    hg cp hglines.lst hglines2.lst
+| |  :+    hg commit -A -m 'Copied “hglines.lst” to “hglines2.lst”' \
+| |  :+        --date '2002-02-10 05:00' --user $A
+| |  :+>>>>>>> other
+| |  :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ if /^    hg /' > nohglines.lst
+| |  :+<<<<<<< local
+| |  :+=======
+| |  :+    hg commit -A -m 'Added nohglines.lst' \
+| |  :+        --date '2002-02-10 15:33' --user $B
+| |  :+    cat nohglines.lst | rev > nohglinesrev.lst
+| |  :+    hg commit -A -m 'Added nohglinesrev.lst' \
+| |  :+        --date '2002-02-10 16:01' --user $B
+| |  :+    seq 1 10 | tr ' ' $'\n' > ignored10.lst
+| |  :+    hg commit -A -m 'Added ignored10.lst' \
+| |  :+        --date '2002-02-11 03:15' --user $A
+| |  :+    echo $'syntax: glob\nignored*' > .hgignore
+| |  :+    hg commit -A -m 'Added .hgignore' \
+| |  :+        --date '2002-02-11 05:43' --user $A
+| |  :+    echo abc >> nohglinesrev.lst
+| |  :+    echo 'Def' > addeddef && hg add addeddef
+| |  :+    hg rm hglines2.lst
+| |  :+    rm nohglines.lst
+| |  :+    cat hglines.lst | rev > hglinesrev.lst
+| |  :+    echo 'Abc' > ignoredabc
+| |  :+>>>>>>> other
+| |  :+tar cJf testrepo.tar.xz testrepo
+| |  :diff -r e021c634413b -r d8140c0b7b0b flines.lst
+| |  :--- a/flines.lst
+| |  :+++ /dev/null
+| |  :@@ -1,5 +0,0 @@
+| |  :-    hg commit -m 'Merge from C' \
+| |  :-    hg commit -m 'Merge from B' \
+| |  :-    hg commit -m 'Merge from C:2' \
+| |  :-    hg commit -m 'Merge from C:1' \
+| |  :-    hg commit -m 'Merge from A' \
+| |  :diff -r e021c634413b -r d8140c0b7b0b glines.lst
+| |  :--- a/glines.lst
+| |  :+++ b/glines.lst
+| |  :@@ -1,10 +1,83 @@
+| |  :+<<<<<<< local
+| |  :+=======
+| |  :+local B='B <b@example.org>'
+| |  :+local C='C <c@example.gov>'
+| |  :+    hg init testrepo
+| |  :+    hg commit -A -m 'Added «createrepo.zsh»' \
+| |  :+    hg mv createrepo.zsh crepo.zsh
+| |  :+    hg commit -A -m 'Renamed «createrepo.zsh» to «crepo.zsh»' \
+| |  :+    hg commit -m $'Replaced\n    {\n        ...\n    }\nwith\n    {\n        ...\n    }' \
+| |  :+>>>>>>> other
+| |  :     hg mv crepo.zsh chgrepo.zsh
+| |  :     hg commit -A -m 'Renamed «crepo.zsh» to «chgrepo.zsh»' \
+| |  :     cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > hglines.lst
+| |  :     cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > datelines.lst
+| |  :+<<<<<<< local
+| |  :+=======
+| |  :+    hg commit -A -m 'Added «hglines.lst» and «datelines.lst»' \
+| |  :+    hg branch A
+| |  :+>>>>>>> other
+| |  :     cat chgrepo.zsh | grep 'd' > dlines.lst
+| |  :+<<<<<<< local
+| |  :+=======
+| |  :+    hg commit -A -m 'Added dlines.lst' \
+| |  :+    hg branch B
+| |  :+>>>>>>> other
+| |  :     cat chgrepo.zsh | grep 'a' > alines.lst
+| |  :+<<<<<<< local
+| |  :+=======
+| |  :+    hg commit -A -m 'Added alines.lst' \
+| |  :+    hg branch C
+| |  :+>>>>>>> other
+| |  :     cat alines.lst | grep 'b' > ablines.lst
+| |  :+<<<<<<< local
+| |  :+=======
+| |  :+    hg commit -A -m 'Added ablines.lst' \
+| |  :+    hg tag ablines \
+| |  :+    hg update default
+| |  :+    hg merge -r ablines
+| |  :+    hg commit -m 'Merge from C' \
+| |  :+    hg update C
+| |  :+>>>>>>> other
+| |  :     cat chgrepo.zsh | grep 'b' > blines.lst
+| |  :+<<<<<<< local
+| |  :+=======
+| |  :+    hg commit -A -m 'Added blines.lst' \
+| |  :+    hg tag blines \
+| |  :+    hg update -r -2
+| |  :+>>>>>>> other
+| |  :     cat chgrepo.zsh | sort | grep 'c' > clines.lst
+| |  :+<<<<<<< local
+| |  :+=======
+| |  :+    hg commit -A -m 'Added clines.lst' \
+| |  :+    hg tag clines \
+| |  :+    hg update A
+| |  :+    hg merge -r B
+| |  :+    hg commit -m 'Merge from B' \
+| |  :+    hg merge -r clines
+| |  :+    hg commit -m 'Merge from C:2' \
+| |  :+    hg update default
+| |  :+    hg merge -r blines
+| |  :+    hg commit -m 'Merge from C:1' \
+| |  :+    hg merge -r A
+| |  :+    hg commit -m 'Merge from A' \
+| |  :+    hg cp hglines.lst hglines2.lst
+| |  :+    hg commit -A -m 'Copied “hglines.lst” to “hglines2.lst”' \
+| |  :+>>>>>>> other
+| |  :     cat chgrepo.zsh | perl -p -i -e 'undef $_ if /^    hg /' > nohglines.lst
+| |  :+<<<<<<< local
+| |  :+=======
+| |  :+    hg commit -A -m 'Added nohglines.lst' \
+| |  :+    cat nohglines.lst | rev > nohglinesrev.lst
+| |  :+    hg commit -A -m 'Added nohglinesrev.lst' \
+| |  :+    seq 1 10 | tr ' ' $'\n' > ignored10.lst
+| |  :+    hg commit -A -m 'Added ignored10.lst' \
+| |  :+    echo $'syntax: glob\nignored*' > .hgignore
+| |  :+    hg commit -A -m 'Added .hgignore' \
+| |  :+    echo abc >> nohglinesrev.lst
+| |  :+    echo 'Def' > addeddef && hg add addeddef
+| |  :+    hg rm hglines2.lst
+| |  :+    rm nohglines.lst
+| |  :+    cat hglines.lst | rev > hglinesrev.lst
+| |  :+    echo 'Abc' > ignoredabc
+| |  :+>>>>>>> other
+| |  :diff -r e021c634413b -r d8140c0b7b0b glinescopy.lst
+| |  :--- /dev/null
+| |  :+++ b/glinescopy.lst
+| |  :@@ -0,0 +1,83 @@
+| |  :+<<<<<<< local
+| |  :+=======
+| |  :+local B='B <b@example.org>'
+| |  :+local C='C <c@example.gov>'
+| |  :+    hg init testrepo
+| |  :+    hg commit -A -m 'Added «createrepo.zsh»' \
+| |  :+    hg mv createrepo.zsh crepo.zsh
+| |  :+    hg commit -A -m 'Renamed «createrepo.zsh» to «crepo.zsh»' \
+| |  :+    hg commit -m $'Replaced\n    {\n        ...\n    }\nwith\n    {\n        ...\n    }' \
+| |  :+>>>>>>> other
+| |  :+    hg mv crepo.zsh chgrepo.zsh
+| |  :+    hg commit -A -m 'Renamed «crepo.zsh» to «chgrepo.zsh»' \
+| |  :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > hglines.lst
+| |  :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > datelines.lst
+| |  :+<<<<<<< local
+| |  :+=======
+| |  :+    hg commit -A -m 'Added «hglines.lst» and «datelines.lst»' \
+| |  :+    hg branch A
+| |  :+>>>>>>> other
+| |  :+    cat chgrepo.zsh | grep 'd' > dlines.lst
+| |  :+<<<<<<< local
+| |  :+=======
+| |  :+    hg commit -A -m 'Added dlines.lst' \
+| |  :+    hg branch B
+| |  :+>>>>>>> other
+| |  :+    cat chgrepo.zsh | grep 'a' > alines.lst
+| |  :+<<<<<<< local
+| |  :+=======
+| |  :+    hg commit -A -m 'Added alines.lst' \
+| |  :+    hg branch C
+| |  :+>>>>>>> other
+| |  :+    cat alines.lst | grep 'b' > ablines.lst
+| |  :+<<<<<<< local
+| |  :+=======
+| |  :+    hg commit -A -m 'Added ablines.lst' \
+| |  :+    hg tag ablines \
+| |  :+    hg update default
+| |  :+    hg merge -r ablines
+| |  :+    hg commit -m 'Merge from C' \
+| |  :+    hg update C
+| |  :+>>>>>>> other
+| |  :+    cat chgrepo.zsh | grep 'b' > blines.lst
+| |  :+<<<<<<< local
+| |  :+=======
+| |  :+    hg commit -A -m 'Added blines.lst' \
+| |  :+    hg tag blines \
+| |  :+    hg update -r -2
+| |  :+>>>>>>> other
+| |  :+    cat chgrepo.zsh | sort | grep 'c' > clines.lst
+| |  :+<<<<<<< local
+| |  :+=======
+| |  :+    hg commit -A -m 'Added clines.lst' \
+| |  :+    hg tag clines \
+| |  :+    hg update A
+| |  :+    hg merge -r B
+| |  :+    hg commit -m 'Merge from B' \
+| |  :+    hg merge -r clines
+| |  :+    hg commit -m 'Merge from C:2' \
+| |  :+    hg update default
+| |  :+    hg merge -r blines
+| |  :+    hg commit -m 'Merge from C:1' \
+| |  :+    hg merge -r A
+| |  :+    hg commit -m 'Merge from A' \
+| |  :+    hg cp hglines.lst hglines2.lst
+| |  :+    hg commit -A -m 'Copied “hglines.lst” to “hglines2.lst”' \
+| |  :+>>>>>>> other
+| |  :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ if /^    hg /' > nohglines.lst
+| |  :+<<<<<<< local
+| |  :+=======
+| |  :+    hg commit -A -m 'Added nohglines.lst' \
+| |  :+    cat nohglines.lst | rev > nohglinesrev.lst
+| |  :+    hg commit -A -m 'Added nohglinesrev.lst' \
+| |  :+    seq 1 10 | tr ' ' $'\n' > ignored10.lst
+| |  :+    hg commit -A -m 'Added ignored10.lst' \
+| |  :+    echo $'syntax: glob\nignored*' > .hgignore
+| |  :+    hg commit -A -m 'Added .hgignore' \
+| |  :+    echo abc >> nohglinesrev.lst
+| |  :+    echo 'Def' > addeddef && hg add addeddef
+| |  :+    hg rm hglines2.lst
+| |  :+    rm nohglines.lst
+| |  :+    cat hglines.lst | rev > hglinesrev.lst
+| |  :+    echo 'Abc' > ignoredabc
+| |  :+>>>>>>> other
+| |  :
+o |  r24 | A <a@example.com> | 2002-02-11 04:15:00 (Пнд, 11 Фев 2002) | 4 lines
+| |  
+| |  Added elines.lst with eplines
+| |  Added flines.lst with frlines
+| |  Added glines.lst with grlines
+| |  
+| |  $   elines.lst | 19 0
+| |  $   flines.lst |  5 0
+| |  $   glines.lst | 10 0
+| |  $ 3 files changed, 34 insertions, 0 deletions
+| |  :diff -r 5afd628b0861 -r e021c634413b elines.lst
+| |  :--- /dev/null
+| |  :+++ b/elines.lst
+| |  :@@ -0,0 +1,19 @@
+| |  :+    hg init testrepo
+| |  :+    cd testrepo
+| |  :+    cp ../createrepo.zsh .
+| |  :+    hg commit -A -m 'Added «createrepo.zsh»' \
+| |  :+    hg mv createrepo.zsh crepo.zsh
+| |  :+    hg commit -A -m 'Renamed «createrepo.zsh» to «crepo.zsh»' \
+| |  :+    perl -p -i -e 'tr/{}/{}/' crepo.zsh
+| |  :+    hg commit -m $'Replaced\n    {\n        ...\n    }\nwith\n    {\n        ...\n    }' \
+| |  :+    hg mv crepo.zsh chgrepo.zsh
+| |  :+    hg commit -A -m 'Renamed «crepo.zsh» to «chgrepo.zsh»' \
+| |  :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > hglines.lst
+| |  :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > datelines.lst
+| |  :+    cat chgrepo.zsh | grep 'd' > dlines.lst
+| |  :+    cat chgrepo.zsh | grep 'a' > alines.lst
+| |  :+    cat alines.lst | grep 'b' > ablines.lst
+| |  :+    cat chgrepo.zsh | grep 'b' > blines.lst
+| |  :+    cat chgrepo.zsh | sort | grep 'c' > clines.lst
+| |  :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ if /^    hg /' > nohglines.lst
+| |  :+tar cJf testrepo.tar.xz testrepo
+| |  :diff -r 5afd628b0861 -r e021c634413b flines.lst
+| |  :--- /dev/null
+| |  :+++ b/flines.lst
+| |  :@@ -0,0 +1,5 @@
+| |  :+    hg commit -m 'Merge from C' \
+| |  :+    hg commit -m 'Merge from B' \
+| |  :+    hg commit -m 'Merge from C:2' \
+| |  :+    hg commit -m 'Merge from C:1' \
+| |  :+    hg commit -m 'Merge from A' \
+| |  :diff -r 5afd628b0861 -r e021c634413b glines.lst
+| |  :--- /dev/null
+| |  :+++ b/glines.lst
+| |  :@@ -0,0 +1,10 @@
+| |  :+    hg mv crepo.zsh chgrepo.zsh
+| |  :+    hg commit -A -m 'Renamed «crepo.zsh» to «chgrepo.zsh»' \
+| |  :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > hglines.lst
+| |  :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > datelines.lst
+| |  :+    cat chgrepo.zsh | grep 'd' > dlines.lst
+| |  :+    cat chgrepo.zsh | grep 'a' > alines.lst
+| |  :+    cat alines.lst | grep 'b' > ablines.lst
+| |  :+    cat chgrepo.zsh | grep 'b' > blines.lst
+| |  :+    cat chgrepo.zsh | sort | grep 'c' > clines.lst
+| |  :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ if /^    hg /' > nohglines.lst
+| |  :
+| o  r23 | A <a@example.com> | 2002-02-11 04:15:00 (Пнд, 11 Фев 2002) | 2 lines
+|/   
+|    Added elines.lst, flines.lst and glines.lst
+|    
+|    $   elines.lst |  88 0
+|    $   flines.lst |  12 0
+|    $   glines.lst |  59 0
+|    $ 3 files changed, 159 insertions, 0 deletions
+|    :diff -r 5afd628b0861 -r e1eaeea486e4 elines.lst
+|    :--- /dev/null
+|    :+++ b/elines.lst
+|    :@@ -0,0 +1,88 @@
+|    :+emulate -L zsh
+|    :+set -e
+|    :+local A='A <a@example.com>'
+|    :+local B='B <b@example.org>'
+|    :+local C='C <c@example.gov>'
+|    :+    set -e
+|    :+    hg init testrepo
+|    :+    cd testrepo
+|    :+    cp ../createrepo.zsh .
+|    :+    # XXX Date test will work only till 2099
+|    :+    hg commit -A -m 'Added «createrepo.zsh»' \
+|    :+        --date '1999-01-02 5:20' --user $A
+|    :+    hg mv createrepo.zsh crepo.zsh
+|    :+    hg commit -A -m 'Renamed «createrepo.zsh» to «crepo.zsh»' \
+|    :+        --date '2000-01-05 7:30' --user $A
+|    :+    perl -p -i -e 'tr/{}/{}/' crepo.zsh
+|    :+    hg commit -m $'Replaced\n    {\n        ...\n    }\nwith\n    {\n        ...\n    }' \
+|    :+        --date '2000-01-15 15:00' --user $B
+|    :+    hg mv crepo.zsh chgrepo.zsh
+|    :+    hg commit -A -m 'Renamed «crepo.zsh» to «chgrepo.zsh»' \
+|    :+        --date '2000-02-01 14:00' --user $B
+|    :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > hglines.lst
+|    :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > datelines.lst
+|    :+    hg commit -A -m 'Added «hglines.lst» and «datelines.lst»' \
+|    :+        --date '2000-05-10 4:23' --user $A
+|    :+    cat chgrepo.zsh | grep 'd' > dlines.lst
+|    :+    hg commit -A -m 'Added dlines.lst' \
+|    :+        --date '2000-11-01 13:24' --user $B
+|    :+    cat chgrepo.zsh | grep 'a' > alines.lst
+|    :+    hg commit -A -m 'Added alines.lst' \
+|    :+        --date '2000-11-02 5:44' --user $A
+|    :+    cat alines.lst | grep 'b' > ablines.lst
+|    :+    hg commit -A -m 'Added ablines.lst' \
+|    :+        --date '2000-11-02 14:13' --user $B
+|    :+    hg tag ablines \
+|    :+        --date '2000-11-02 14:14' --user $B
+|    :+    hg update default
+|    :+    hg merge -r ablines
+|    :+    hg commit -m 'Merge from C' \
+|    :+        --date '2001-01-01 00:00' --user $C
+|    :+    hg update C
+|    :+    cat chgrepo.zsh | grep 'b' > blines.lst
+|    :+    hg commit -A -m 'Added blines.lst' \
+|    :+        --date '2001-02-01 05:18' --user $A
+|    :+    hg tag blines \
+|    :+        --date '2001-02-01 05:19' --user $A
+|    :+    hg update -r -2
+|    :+    cat chgrepo.zsh | sort | grep 'c' > clines.lst
+|    :+    hg commit -A -m 'Added clines.lst' \
+|    :+        --date '2001-02-01 14:56' --user $B
+|    :+    hg tag clines \
+|    :+        --date '2001-02-01 14:56:52' --user $B
+|    :+    hg update A
+|    :+    hg merge -r B
+|    :+    hg commit -m 'Merge from B' \
+|    :+        --date '2002-01-01 00:00' --user $C
+|    :+    hg merge -r clines
+|    :+    hg commit -m 'Merge from C:2' \
+|    :+        --date '2002-01-01 00:00:15' --user $C
+|    :+    hg update default
+|    :+    hg merge -r blines
+|    :+    hg commit -m 'Merge from C:1' \
+|    :+        --date '2002-01-01 00:00:30' --user $C
+|    :+    hg merge -r A
+|    :+    hg commit -m 'Merge from A' \
+|    :+        --date '2002-01-01 00:00:45' --user $C
+|    :+    hg cp hglines.lst hglines2.lst
+|    :+    hg commit -A -m 'Copied “hglines.lst” to “hglines2.lst”' \
+|    :+        --date '2002-02-10 05:00' --user $A
+|    :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ if /^    hg /' > nohglines.lst
+|    :+    hg commit -A -m 'Added nohglines.lst' \
+|    :+        --date '2002-02-10 15:33' --user $B
+|    :+    cat nohglines.lst | rev > nohglinesrev.lst
+|    :+    hg commit -A -m 'Added nohglinesrev.lst' \
+|    :+        --date '2002-02-10 16:01' --user $B
+|    :+    seq 1 10 | tr ' ' $'\n' > ignored10.lst
+|    :+    hg commit -A -m 'Added ignored10.lst' \
+|    :+        --date '2002-02-11 03:15' --user $A
+|    :+    echo $'syntax: glob\nignored*' > .hgignore
+|    :+    hg commit -A -m 'Added .hgignore' \
+|    :+        --date '2002-02-11 05:43' --user $A
+|    :+    echo abc >> nohglinesrev.lst
+|    :+    echo 'Def' > addeddef && hg add addeddef
+|    :+    hg rm hglines2.lst
+|    :+    rm nohglines.lst
+|    :+    cat hglines.lst | rev > hglinesrev.lst
+|    :+    echo 'Abc' > ignoredabc
+|    :+tar cJf testrepo.tar.xz testrepo
+|    :diff -r 5afd628b0861 -r e1eaeea486e4 flines.lst
+|    :--- /dev/null
+|    :+++ b/flines.lst
+|    :@@ -0,0 +1,12 @@
+|    :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > hglines.lst
+|    :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > datelines.lst
+|    :+    hg update default
+|    :+    hg commit -m 'Merge from C' \
+|    :+    hg commit -m 'Merge from B' \
+|    :+    hg commit -m 'Merge from C:2' \
+|    :+    hg update default
+|    :+    hg commit -m 'Merge from C:1' \
+|    :+    hg commit -m 'Merge from A' \
+|    :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ if /^    hg /' > nohglines.lst
+|    :+    echo 'Def' > addeddef && hg add addeddef
+|    :+tar cJf testrepo.tar.xz testrepo
+|    :diff -r 5afd628b0861 -r e1eaeea486e4 glines.lst
+|    :--- /dev/null
+|    :+++ b/glines.lst
+|    :@@ -0,0 +1,59 @@
+|    :+local B='B <b@example.org>'
+|    :+local C='C <c@example.gov>'
+|    :+    hg init testrepo
+|    :+    hg commit -A -m 'Added «createrepo.zsh»' \
+|    :+    hg mv createrepo.zsh crepo.zsh
+|    :+    hg commit -A -m 'Renamed «createrepo.zsh» to «crepo.zsh»' \
+|    :+    hg commit -m $'Replaced\n    {\n        ...\n    }\nwith\n    {\n        ...\n    }' \
+|    :+    hg mv crepo.zsh chgrepo.zsh
+|    :+    hg commit -A -m 'Renamed «crepo.zsh» to «chgrepo.zsh»' \
+|    :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > hglines.lst
+|    :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > datelines.lst
+|    :+    hg commit -A -m 'Added «hglines.lst» and «datelines.lst»' \
+|    :+    hg branch A
+|    :+    cat chgrepo.zsh | grep 'd' > dlines.lst
+|    :+    hg commit -A -m 'Added dlines.lst' \
+|    :+    hg branch B
+|    :+    cat chgrepo.zsh | grep 'a' > alines.lst
+|    :+    hg commit -A -m 'Added alines.lst' \
+|    :+    hg branch C
+|    :+    cat alines.lst | grep 'b' > ablines.lst
+|    :+    hg commit -A -m 'Added ablines.lst' \
+|    :+    hg tag ablines \
+|    :+    hg update default
+|    :+    hg merge -r ablines
+|    :+    hg commit -m 'Merge from C' \
+|    :+    hg update C
+|    :+    cat chgrepo.zsh | grep 'b' > blines.lst
+|    :+    hg commit -A -m 'Added blines.lst' \
+|    :+    hg tag blines \
+|    :+    hg update -r -2
+|    :+    cat chgrepo.zsh | sort | grep 'c' > clines.lst
+|    :+    hg commit -A -m 'Added clines.lst' \
+|    :+    hg tag clines \
+|    :+    hg update A
+|    :+    hg merge -r B
+|    :+    hg commit -m 'Merge from B' \
+|    :+    hg merge -r clines
+|    :+    hg commit -m 'Merge from C:2' \
+|    :+    hg update default
+|    :+    hg merge -r blines
+|    :+    hg commit -m 'Merge from C:1' \
+|    :+    hg merge -r A
+|    :+    hg commit -m 'Merge from A' \
+|    :+    hg cp hglines.lst hglines2.lst
+|    :+    hg commit -A -m 'Copied “hglines.lst” to “hglines2.lst”' \
+|    :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ if /^    hg /' > nohglines.lst
+|    :+    hg commit -A -m 'Added nohglines.lst' \
+|    :+    cat nohglines.lst | rev > nohglinesrev.lst
+|    :+    hg commit -A -m 'Added nohglinesrev.lst' \
+|    :+    seq 1 10 | tr ' ' $'\n' > ignored10.lst
+|    :+    hg commit -A -m 'Added ignored10.lst' \
+|    :+    echo $'syntax: glob\nignored*' > .hgignore
+|    :+    hg commit -A -m 'Added .hgignore' \
+|    :+    echo abc >> nohglinesrev.lst
+|    :+    echo 'Def' > addeddef && hg add addeddef
+|    :+    hg rm hglines2.lst
+|    :+    rm nohglines.lst
+|    :+    cat hglines.lst | rev > hglinesrev.lst
+|    :+    echo 'Abc' > ignoredabc
+|    :
+o  r22 | A <a@example.com> | 2002-02-11 03:16:00 (Пнд, 11 Фев 2002) | 2 lines
+|  
+|  Added tag oldtag for changeset 023aa55bd806
+|  
+|  $   .hgtags | 1 0
+|  $ 1 files changed, 1 insertions, 0 deletions
+|  :diff -r e85aa09aab16 -r 5afd628b0861 .hgtags
+|  :--- a/.hgtags
+|  :+++ b/.hgtags
+|  :@@ -1,1 +1,2 @@
+|  : c06107b7bcbe751d2dd40faf4179ee7d6aac44ac ablines
+|  :+023aa55bd8062179ce36adbdd78363e9b88718c1 oldtag
+|  :
+o  r21 | A <a@example.com> | 2002-02-11 03:15:00 (Пнд, 11 Фев 2002) | 2 lines
+|  
+|  Added ignored10.lst
+|  
+|  $   ignored10.lst | 10 0
+|  $ 1 files changed, 10 insertions, 0 deletions
+|  :diff -r 67cf252de26b -r e85aa09aab16 ignored10.lst
+|  :--- /dev/null
+|  :+++ b/ignored10.lst
+|  :@@ -0,0 +1,10 @@
+|  :+1
+|  :+2
+|  :+3
+|  :+4
+|  :+5
+|  :+6
+|  :+7
+|  :+8
+|  :+9
+|  :+10
+|  :
+o  r20 | B <b@example.org> | 2002-02-10 16:01:00 (Вск, 10 Фев 2002) | 2 lines
+|  
+|  Added nohglinesrev.lst
+|  
+|  $   nohglinesrev.lst | 53 0
+|  $ 1 files changed, 53 insertions, 0 deletions
+|  :diff -r 456e0b05b81a -r 67cf252de26b nohglinesrev.lst
+|  :--- /dev/null
+|  :+++ b/nohglinesrev.lst
+|  :@@ -0,0 +1,53 @@
+|  :+hsz/nib/!#
+|  :+hsz L- etalume
+|  :+e- tes
+|  :+'>moc.elpmaxe@a< A'=A lacol
+|  :+'>gro.elpmaxe@b< B'=B lacol
+|  :+'>vog.elpmaxe@c< C'=C lacol
+|  :+{
+|  :+e- tes    
+|  :+opertset dc    
+|  :+. hsz.operetaerc/.. pc    
+|  :+9902 llit ylno krow lliw tset etaD XXX #    
+|  :+A$ resu-- '02:5 20-10-9991' etad--        
+|  :+A$ resu-- '03:7 50-10-0002' etad--        
+|  :+hsz.operc '/}{/}{/rt' e- i- p- lrep    
+|  :+B$ resu-- '00:51 51-10-0002' etad--        
+|  :+B$ resu-- '00:41 10-20-0002' etad--        
+|  :+tsl.senilgh > '/ gh    ^/ sselnu _$ fednu' e- i- p- lrep | hsz.operghc tac    
+|  :+tsl.seniletad > '/ gh    ^/ sselnu _$ fednu' e- i- p- lrep | hsz.operghc tac    
+|  :+A$ resu-- '32:4 01-50-0002' etad--        
+|  :+tsl.senild > 'd' perg | hsz.operghc tac    
+|  :+B$ resu-- '42:31 10-11-0002' etad--        
+|  :+tsl.senila > 'a' perg | hsz.operghc tac    
+|  :+A$ resu-- '44:5 20-11-0002' etad--        
+|  :+tsl.senilba > 'b' perg | tsl.senila tac    
+|  :+B$ resu-- '31:41 20-11-0002' etad--        
+|  :+B$ resu-- '41:41 20-11-0002' etad--        
+|  :+C$ resu-- '00:00 10-10-1002' etad--        
+|  :+tsl.senilb > 'b' perg | hsz.operghc tac    
+|  :+A$ resu-- '81:50 10-20-1002' etad--        
+|  :+A$ resu-- '91:50 10-20-1002' etad--        
+|  :+tsl.senilc > 'c' perg | tros | hsz.operghc tac    
+|  :+B$ resu-- '65:41 10-20-1002' etad--        
+|  :+B$ resu-- '25:65:41 10-20-1002' etad--        
+|  :+C$ resu-- '00:00 10-10-2002' etad--        
+|  :+C$ resu-- '51:00:00 10-10-2002' etad--        
+|  :+C$ resu-- '03:00:00 10-10-2002' etad--        
+|  :+C$ resu-- '54:00:00 10-10-2002' etad--        
+|  :+A$ resu-- '00:50 01-20-2002' etad--        
+|  :+tsl.senilghon > '/ gh    ^/ fi _$ fednu' e- i- p- lrep | hsz.operghc tac    
+|  :+B$ resu-- '33:51 01-20-2002' etad--        
+|  :+tsl.versenilghon > ver | tsl.senilghon tac    
+|  :+B$ resu-- '10:61 01-20-2002' etad--        
+|  :+tsl.01derongi > 'n\'$ ' ' rt | 01 1 qes    
+|  :+A$ resu-- '51:30 11-20-2002' etad--        
+|  :+erongigh. > '*derongin\bolg :xatnys'$ ohce    
+|  :+A$ resu-- '34:50 11-20-2002' etad--        
+|  :+tsl.versenilghon >> cba ohce    
+|  :+feddedda dda gh && feddedda > 'feD' ohce    
+|  :+tsl.senilghon mr    
+|  :+tsl.versenilgh > ver | tsl.senilgh tac    
+|  :+cbaderongi > 'cbA' ohce    
+|  :+}
+|  :+opertset zx.rat.opertset fJc rat
+|  :
+o  r19 | B <b@example.org> | 2002-02-10 15:33:00 (Вск, 10 Фев 2002) | 2 lines
+|  
+|  Added nohglines.lst
+|  
+|  $   nohglines.lst | 53 0
+|  $ 1 files changed, 53 insertions, 0 deletions
+|  :diff -r f44a21859e57 -r 456e0b05b81a nohglines.lst
+|  :--- /dev/null
+|  :+++ b/nohglines.lst
+|  :@@ -0,0 +1,53 @@
+|  :+#!/bin/zsh
+|  :+emulate -L zsh
+|  :+set -e
+|  :+local A='A <a@example.com>'
+|  :+local B='B <b@example.org>'
+|  :+local C='C <c@example.gov>'
+|  :+{
+|  :+    set -e
+|  :+    cd testrepo
+|  :+    cp ../createrepo.zsh .
+|  :+    # XXX Date test will work only till 2099
+|  :+        --date '1999-01-02 5:20' --user $A
+|  :+        --date '2000-01-05 7:30' --user $A
+|  :+    perl -p -i -e 'tr/{}/{}/' crepo.zsh
+|  :+        --date '2000-01-15 15:00' --user $B
+|  :+        --date '2000-02-01 14:00' --user $B
+|  :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > hglines.lst
+|  :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > datelines.lst
+|  :+        --date '2000-05-10 4:23' --user $A
+|  :+    cat chgrepo.zsh | grep 'd' > dlines.lst
+|  :+        --date '2000-11-01 13:24' --user $B
+|  :+    cat chgrepo.zsh | grep 'a' > alines.lst
+|  :+        --date '2000-11-02 5:44' --user $A
+|  :+    cat alines.lst | grep 'b' > ablines.lst
+|  :+        --date '2000-11-02 14:13' --user $B
+|  :+        --date '2000-11-02 14:14' --user $B
+|  :+        --date '2001-01-01 00:00' --user $C
+|  :+    cat chgrepo.zsh | grep 'b' > blines.lst
+|  :+        --date '2001-02-01 05:18' --user $A
+|  :+        --date '2001-02-01 05:19' --user $A
+|  :+    cat chgrepo.zsh | sort | grep 'c' > clines.lst
+|  :+        --date '2001-02-01 14:56' --user $B
+|  :+        --date '2001-02-01 14:56:52' --user $B
+|  :+        --date '2002-01-01 00:00' --user $C
+|  :+        --date '2002-01-01 00:00:15' --user $C
+|  :+        --date '2002-01-01 00:00:30' --user $C
+|  :+        --date '2002-01-01 00:00:45' --user $C
+|  :+        --date '2002-02-10 05:00' --user $A
+|  :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ if /^    hg /' > nohglines.lst
+|  :+        --date '2002-02-10 15:33' --user $B
+|  :+    cat nohglines.lst | rev > nohglinesrev.lst
+|  :+        --date '2002-02-10 16:01' --user $B
+|  :+    seq 1 10 | tr ' ' $'\n' > ignored10.lst
+|  :+        --date '2002-02-11 03:15' --user $A
+|  :+    echo $'syntax: glob\nignored*' > .hgignore
+|  :+        --date '2002-02-11 05:43' --user $A
+|  :+    echo abc >> nohglinesrev.lst
+|  :+    echo 'Def' > addeddef && hg add addeddef
+|  :+    rm nohglines.lst
+|  :+    cat hglines.lst | rev > hglinesrev.lst
+|  :+    echo 'Abc' > ignoredabc
+|  :+}
+|  :+tar cJf testrepo.tar.xz testrepo
+|  :
+o  r18 | A <a@example.com> | 2002-02-10 05:00:00 (Вск, 10 Фев 2002) | 2 lines
+|  
+|  Copied “hglines.lst” to “hglines2.lst”
+|  
+|  $   hglines2.lst | 41 0
+|  $ 1 files changed, 41 insertions, 0 deletions
+|  :diff -r e5648a3eea57 -r f44a21859e57 hglines2.lst
+|  :--- /dev/null
+|  :+++ b/hglines2.lst
+|  :@@ -0,0 +1,41 @@
+|  :+    hg init testrepo
+|  :+    hg commit -A -m 'Added «createrepo.zsh»' \
+|  :+    hg mv createrepo.zsh crepo.zsh
+|  :+    hg commit -A -m 'Renamed «createrepo.zsh» to «crepo.zsh»' \
+|  :+    hg commit -m $'Replaced\n    {\n        ...\n    }\nwith\n    {\n        ...\n    }' \
+|  :+    hg mv crepo.zsh chgrepo.zsh
+|  :+    hg commit -A -m 'Renamed «crepo.zsh» to «chgrepo.zsh»' \
+|  :+    hg commit -A -m 'Added «hglines.lst» and «datelines.lst»' \
+|  :+    hg branch A
+|  :+    hg commit -A -m 'Added dlines.lst' \
+|  :+    hg branch B
+|  :+    hg commit -A -m 'Added alines.lst' \
+|  :+    hg branch C
+|  :+    hg commit -A -m 'Added ablines.lst' \
+|  :+    hg tag ablines \
+|  :+    hg update default
+|  :+    hg merge -r ablines
+|  :+    hg commit -m 'Merge from C' \
+|  :+    hg update C
+|  :+    hg commit -A -m 'Added blines.lst' \
+|  :+    hg tag blines \
+|  :+    hg update -r -2
+|  :+    hg commit -A -m 'Added clines.lst' \
+|  :+    hg tag clines \
+|  :+    hg update A
+|  :+    hg merge -r B
+|  :+    hg commit -m 'Merge from B' \
+|  :+    hg merge -r clines
+|  :+    hg commit -m 'Merge from C:2' \
+|  :+    hg update default
+|  :+    hg merge -r blines
+|  :+    hg commit -m 'Merge from C:1' \
+|  :+    hg merge -r A
+|  :+    hg commit -m 'Merge from A' \
+|  :+    hg cp hglines.lst hglines2.lst
+|  :+    hg commit -A -m 'Copied “hglines.lst” to “hglines2.lst”' \
+|  :+    hg commit -A -m 'Added nohglines.lst' \
+|  :+    hg commit -A -m 'Added nohglinesrev.lst' \
+|  :+    hg commit -A -m 'Added ignored10.lst' \
+|  :+    hg commit -A -m 'Added .hgignore' \
+|  :+    hg rm hglines2.lst
+|  :
+o    r17 | C <c@example.gov> | 2002-01-01 00:00:45 (Втр, 01 Янв 2002) | 2 lines
+|\   
+| |  Merge from A
+| |  
+| |  $   clines.lst | 49 0
+| |  $ 1 files changed, 49 insertions, 0 deletions
+| |  :diff -r 462a1e95be86 -r e5648a3eea57 clines.lst
+| |  :--- /dev/null
+| |  :+++ b/clines.lst
+| |  :@@ -0,0 +1,49 @@
+| |  :+    cat alines.lst | grep 'b' > ablines.lst
+| |  :+    cat chgrepo.zsh | grep 'a' > alines.lst
+| |  :+    cat chgrepo.zsh | grep 'b' > blines.lst
+| |  :+    cat chgrepo.zsh | grep 'd' > dlines.lst
+| |  :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ if /^    hg /' > nohglines.lst
+| |  :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > datelines.lst
+| |  :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > hglines.lst
+| |  :+    cat chgrepo.zsh | sort | grep 'c' > clines.lst
+| |  :+    cat hglines.lst | rev > hglinesrev.lst
+| |  :+    cat nohglines.lst | rev > nohglinesrev.lst
+| |  :+    cd testrepo
+| |  :+    cp ../createrepo.zsh .
+| |  :+    echo 'Abc' > ignoredabc
+| |  :+    echo abc >> nohglinesrev.lst
+| |  :+    echo 'Def' > addeddef && hg add addeddef
+| |  :+    echo $'syntax: glob\nignored*' > .hgignore
+| |  :+    hg branch A
+| |  :+    hg branch B
+| |  :+    hg branch C
+| |  :+    hg commit -A -m 'Added ablines.lst' \
+| |  :+    hg commit -A -m 'Added alines.lst' \
+| |  :+    hg commit -A -m 'Added blines.lst' \
+| |  :+    hg commit -A -m 'Added clines.lst' \
+| |  :+    hg commit -A -m 'Added «createrepo.zsh»' \
+| |  :+    hg commit -A -m 'Added dlines.lst' \
+| |  :+    hg commit -A -m 'Added .hgignore' \
+| |  :+    hg commit -A -m 'Added «hglines.lst» and «datelines.lst»' \
+| |  :+    hg commit -A -m 'Added ignored10.lst' \
+| |  :+    hg commit -A -m 'Added nohglines.lst' \
+| |  :+    hg commit -A -m 'Added nohglinesrev.lst' \
+| |  :+    hg commit -A -m 'Copied “hglines.lst” to “hglines2.lst”' \
+| |  :+    hg commit -A -m 'Renamed «createrepo.zsh» to «crepo.zsh»' \
+| |  :+    hg commit -A -m 'Renamed «crepo.zsh» to «chgrepo.zsh»' \
+| |  :+    hg commit -m 'Merge from A' \
+| |  :+    hg commit -m 'Merge from B' \
+| |  :+    hg commit -m 'Merge from C' \
+| |  :+    hg commit -m 'Merge from C:1' \
+| |  :+    hg commit -m 'Merge from C:2' \
+| |  :+    hg commit -m $'Replaced\n    {\n        ...\n    }\nwith\n    {\n        ...\n    }' \
+| |  :+    hg cp hglines.lst hglines2.lst
+| |  :+    hg merge -r clines
+| |  :+    hg mv createrepo.zsh crepo.zsh
+| |  :+    hg mv crepo.zsh chgrepo.zsh
+| |  :+    hg tag clines \
+| |  :+local A='A <a@example.com>'
+| |  :+local B='B <b@example.org>'
+| |  :+local C='C <c@example.gov>'
+| |  :+    perl -p -i -e 'tr/{}/{}/' crepo.zsh
+| |  :+tar cJf testrepo.tar.xz testrepo
+| |  :
+o |    r16 | C <c@example.gov> | 2002-01-01 00:00:30 (Втр, 01 Янв 2002) | 2 lines
+|\ \   
+| | |  Merge from C:1
+| | |  
+| | |  $   .hgtags    |  1 0
+| | |  $   blines.lst | 16 0
+| | |  $ 2 files changed, 17 insertions, 0 deletions
+| | |  :diff -r 269399222040 -r 462a1e95be86 .hgtags
+| | |  :--- /dev/null
+| | |  :+++ b/.hgtags
+| | |  :@@ -0,0 +1,1 @@
+| | |  :+c06107b7bcbe751d2dd40faf4179ee7d6aac44ac ablines
+| | |  :diff -r 269399222040 -r 462a1e95be86 blines.lst
+| | |  :--- /dev/null
+| | |  :+++ b/blines.lst
+| | |  :@@ -0,0 +1,16 @@
+| | |  :+#!/bin/zsh
+| | |  :+local B='B <b@example.org>'
+| | |  :+    hg branch A
+| | |  :+    hg branch B
+| | |  :+    hg branch C
+| | |  :+    cat alines.lst | grep 'b' > ablines.lst
+| | |  :+    hg commit -A -m 'Added ablines.lst' \
+| | |  :+    hg tag ablines \
+| | |  :+    hg merge -r ablines
+| | |  :+    cat chgrepo.zsh | grep 'b' > blines.lst
+| | |  :+    hg commit -A -m 'Added blines.lst' \
+| | |  :+    hg tag blines \
+| | |  :+    hg merge -r blines
+| | |  :+    echo $'syntax: glob\nignored*' > .hgignore
+| | |  :+    echo abc >> nohglinesrev.lst
+| | |  :+    echo 'Abc' > ignoredabc
+| | |  :
+| | o    r15 | C <c@example.gov> | 2002-01-01 00:00:15 (Втр, 01 Янв 2002) | 2 lines
+| | |\   
+| | | |  Merge from C:2
+| | | |  
+| | | |  $   .hgtags     |  1 0
+| | | |  $   ablines.lst | 13 0
+| | | |  $   blines.lst  | 16 0
+| | | |  $   clines.lst  | 49 0
+| | | |  $ 4 files changed, 79 insertions, 0 deletions
+| | | |  :diff -r 5e2f73d0c01d -r be92227e3e43 .hgtags
+| | | |  :--- /dev/null
+| | | |  :+++ b/.hgtags
+| | | |  :@@ -0,0 +1,1 @@
+| | | |  :+c06107b7bcbe751d2dd40faf4179ee7d6aac44ac ablines
+| | | |  :diff -r 5e2f73d0c01d -r be92227e3e43 ablines.lst
+| | | |  :--- /dev/null
+| | | |  :+++ b/ablines.lst
+| | | |  :@@ -0,0 +1,13 @@
+| | | |  :+local B='B <b@example.org>'
+| | | |  :+    hg branch A
+| | | |  :+    hg branch B
+| | | |  :+    hg branch C
+| | | |  :+    cat alines.lst | grep 'b' > ablines.lst
+| | | |  :+    hg commit -A -m 'Added ablines.lst' \
+| | | |  :+    hg tag ablines \
+| | | |  :+    hg merge -r ablines
+| | | |  :+    cat chgrepo.zsh | grep 'b' > blines.lst
+| | | |  :+    hg tag blines \
+| | | |  :+    echo $'syntax: glob\nignored*' > .hgignore
+| | | |  :+    echo abc >> nohglinesrev.lst
+| | | |  :+    echo 'Abc' > ignoredabc
+| | | |  :diff -r 5e2f73d0c01d -r be92227e3e43 blines.lst
+| | | |  :--- /dev/null
+| | | |  :+++ b/blines.lst
+| | | |  :@@ -0,0 +1,16 @@
+| | | |  :+#!/bin/zsh
+| | | |  :+local B='B <b@example.org>'
+| | | |  :+    hg branch A
+| | | |  :+    hg branch B
+| | | |  :+    hg branch C
+| | | |  :+    cat alines.lst | grep 'b' > ablines.lst
+| | | |  :+    hg commit -A -m 'Added ablines.lst' \
+| | | |  :+    hg tag ablines \
+| | | |  :+    hg merge -r ablines
+| | | |  :+    cat chgrepo.zsh | grep 'b' > blines.lst
+| | | |  :+    hg commit -A -m 'Added blines.lst' \
+| | | |  :+    hg tag blines \
+| | | |  :+    hg merge -r blines
+| | | |  :+    echo $'syntax: glob\nignored*' > .hgignore
+| | | |  :+    echo abc >> nohglinesrev.lst
+| | | |  :+    echo 'Abc' > ignoredabc
+| | | |  :diff -r 5e2f73d0c01d -r be92227e3e43 clines.lst
+| | | |  :--- /dev/null
+| | | |  :+++ b/clines.lst
+| | | |  :@@ -0,0 +1,49 @@
+| | | |  :+    cat alines.lst | grep 'b' > ablines.lst
+| | | |  :+    cat chgrepo.zsh | grep 'a' > alines.lst
+| | | |  :+    cat chgrepo.zsh | grep 'b' > blines.lst
+| | | |  :+    cat chgrepo.zsh | grep 'd' > dlines.lst
+| | | |  :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ if /^    hg /' > nohglines.lst
+| | | |  :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > datelines.lst
+| | | |  :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > hglines.lst
+| | | |  :+    cat chgrepo.zsh | sort | grep 'c' > clines.lst
+| | | |  :+    cat hglines.lst | rev > hglinesrev.lst
+| | | |  :+    cat nohglines.lst | rev > nohglinesrev.lst
+| | | |  :+    cd testrepo
+| | | |  :+    cp ../createrepo.zsh .
+| | | |  :+    echo 'Abc' > ignoredabc
+| | | |  :+    echo abc >> nohglinesrev.lst
+| | | |  :+    echo 'Def' > addeddef && hg add addeddef
+| | | |  :+    echo $'syntax: glob\nignored*' > .hgignore
+| | | |  :+    hg branch A
+| | | |  :+    hg branch B
+| | | |  :+    hg branch C
+| | | |  :+    hg commit -A -m 'Added ablines.lst' \
+| | | |  :+    hg commit -A -m 'Added alines.lst' \
+| | | |  :+    hg commit -A -m 'Added blines.lst' \
+| | | |  :+    hg commit -A -m 'Added clines.lst' \
+| | | |  :+    hg commit -A -m 'Added «createrepo.zsh»' \
+| | | |  :+    hg commit -A -m 'Added dlines.lst' \
+| | | |  :+    hg commit -A -m 'Added .hgignore' \
+| | | |  :+    hg commit -A -m 'Added «hglines.lst» and «datelines.lst»' \
+| | | |  :+    hg commit -A -m 'Added ignored10.lst' \
+| | | |  :+    hg commit -A -m 'Added nohglines.lst' \
+| | | |  :+    hg commit -A -m 'Added nohglinesrev.lst' \
+| | | |  :+    hg commit -A -m 'Copied “hglines.lst” to “hglines2.lst”' \
+| | | |  :+    hg commit -A -m 'Renamed «createrepo.zsh» to «crepo.zsh»' \
+| | | |  :+    hg commit -A -m 'Renamed «crepo.zsh» to «chgrepo.zsh»' \
+| | | |  :+    hg commit -m 'Merge from A' \
+| | | |  :+    hg commit -m 'Merge from B' \
+| | | |  :+    hg commit -m 'Merge from C' \
+| | | |  :+    hg commit -m 'Merge from C:1' \
+| | | |  :+    hg commit -m 'Merge from C:2' \
+| | | |  :+    hg commit -m $'Replaced\n    {\n        ...\n    }\nwith\n    {\n        ...\n    }' \
+| | | |  :+    hg cp hglines.lst hglines2.lst
+| | | |  :+    hg merge -r clines
+| | | |  :+    hg mv createrepo.zsh crepo.zsh
+| | | |  :+    hg mv crepo.zsh chgrepo.zsh
+| | | |  :+    hg tag clines \
+| | | |  :+local A='A <a@example.com>'
+| | | |  :+local B='B <b@example.org>'
+| | | |  :+local C='C <c@example.gov>'
+| | | |  :+    perl -p -i -e 'tr/{}/{}/' crepo.zsh
+| | | |  :+tar cJf testrepo.tar.xz testrepo
+| | | |  :
+| | o |    r14 | C <c@example.gov> | 2002-01-01 00:00:00 (Втр, 01 Янв 2002) | 2 lines
+| | |\ \   
+| | | | |  Merge from B
+| | | | |  
+| | | | |  $   alines.lst | 64 0
+| | | | |  $ 1 files changed, 64 insertions, 0 deletions
+| | | | |  :diff -r d760b0fe4fe4 -r 5e2f73d0c01d alines.lst
+| | | | |  :--- /dev/null
+| | | | |  :+++ b/alines.lst
+| | | | |  :@@ -0,0 +1,64 @@
+| | | | |  :+emulate -L zsh
+| | | | |  :+local A='A <a@example.com>'
+| | | | |  :+local B='B <b@example.org>'
+| | | | |  :+local C='C <c@example.gov>'
+| | | | |  :+    cp ../createrepo.zsh .
+| | | | |  :+    # XXX Date test will work only till 2099
+| | | | |  :+    hg commit -A -m 'Added «createrepo.zsh»' \
+| | | | |  :+        --date '1999-01-02 5:20' --user $A
+| | | | |  :+    hg mv createrepo.zsh crepo.zsh
+| | | | |  :+    hg commit -A -m 'Renamed «createrepo.zsh» to «crepo.zsh»' \
+| | | | |  :+        --date '2000-01-05 7:30' --user $A
+| | | | |  :+    hg commit -m $'Replaced\n    {\n        ...\n    }\nwith\n    {\n        ...\n    }' \
+| | | | |  :+        --date '2000-01-15 15:00' --user $B
+| | | | |  :+    hg commit -A -m 'Renamed «crepo.zsh» to «chgrepo.zsh»' \
+| | | | |  :+        --date '2000-02-01 14:00' --user $B
+| | | | |  :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > hglines.lst
+| | | | |  :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > datelines.lst
+| | | | |  :+    hg commit -A -m 'Added «hglines.lst» and «datelines.lst»' \
+| | | | |  :+        --date '2000-05-10 4:23' --user $A
+| | | | |  :+    hg branch A
+| | | | |  :+    cat chgrepo.zsh | grep 'd' > dlines.lst
+| | | | |  :+        --date '2000-11-01 13:24' --user $B
+| | | | |  :+    hg branch B
+| | | | |  :+    cat chgrepo.zsh | grep 'a' > alines.lst
+| | | | |  :+    hg commit -A -m 'Added alines.lst' \
+| | | | |  :+        --date '2000-11-02 5:44' --user $A
+| | | | |  :+    hg branch C
+| | | | |  :+    cat alines.lst | grep 'b' > ablines.lst
+| | | | |  :+    hg commit -A -m 'Added ablines.lst' \
+| | | | |  :+        --date '2000-11-02 14:13' --user $B
+| | | | |  :+    hg tag ablines \
+| | | | |  :+        --date '2000-11-02 14:14' --user $B
+| | | | |  :+    hg update default
+| | | | |  :+    hg merge -r ablines
+| | | | |  :+        --date '2001-01-01 00:00' --user $C
+| | | | |  :+    hg update C
+| | | | |  :+    cat chgrepo.zsh | grep 'b' > blines.lst
+| | | | |  :+        --date '2001-02-01 05:18' --user $A
+| | | | |  :+    hg tag blines \
+| | | | |  :+        --date '2001-02-01 05:19' --user $A
+| | | | |  :+    hg update -r -2
+| | | | |  :+    cat chgrepo.zsh | sort | grep 'c' > clines.lst
+| | | | |  :+        --date '2001-02-01 14:56' --user $B
+| | | | |  :+    hg tag clines \
+| | | | |  :+        --date '2001-02-01 14:56:52' --user $B
+| | | | |  :+    hg update A
+| | | | |  :+        --date '2002-01-01 00:00' --user $C
+| | | | |  :+        --date '2002-01-01 00:00:15' --user $C
+| | | | |  :+    hg update default
+| | | | |  :+        --date '2002-01-01 00:00:30' --user $C
+| | | | |  :+        --date '2002-01-01 00:00:45' --user $C
+| | | | |  :+        --date '2002-02-10 05:00' --user $A
+| | | | |  :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ if /^    hg /' > nohglines.lst
+| | | | |  :+        --date '2002-02-10 15:33' --user $B
+| | | | |  :+    cat nohglines.lst | rev > nohglinesrev.lst
+| | | | |  :+        --date '2002-02-10 16:01' --user $B
+| | | | |  :+        --date '2002-02-11 03:15' --user $A
+| | | | |  :+    echo $'syntax: glob\nignored*' > .hgignore
+| | | | |  :+        --date '2002-02-11 05:43' --user $A
+| | | | |  :+    echo abc >> nohglinesrev.lst
+| | | | |  :+    echo 'Def' > addeddef && hg add addeddef
+| | | | |  :+    cat hglines.lst | rev > hglinesrev.lst
+| | | | |  :+    echo 'Abc' > ignoredabc
+| | | | |  :+tar cJf testrepo.tar.xz testrepo
+| | | | |  :
+| | | | | o  r13 | B <b@example.org> | 2001-02-01 14:56:52 (Чтв, 01 Фев 2001) | 2 lines
+| | | | |/   
+| | | | |    Added tag clines for changeset 023aa55bd806
+| | | | |    
+| | | | |    $   .hgtags | 1 0
+| | | | |    $ 1 files changed, 1 insertions, 0 deletions
+| | | | |    :diff -r 023aa55bd806 -r 14b19ea42f82 .hgtags
+| | | | |    :--- a/.hgtags
+| | | | |    :+++ b/.hgtags
+| | | | |    :@@ -1,1 +1,2 @@
+| | | | |    : c06107b7bcbe751d2dd40faf4179ee7d6aac44ac ablines
+| | | | |    :+023aa55bd8062179ce36adbdd78363e9b88718c1 clines
+| | | | |    :
+| +-----o  r12 | B <b@example.org> | 2001-02-01 14:56:00 (Чтв, 01 Фев 2001) | 2 lines
+| | | |    
+| | | |    Added clines.lst
+| | | |    
+| | | |    $   clines.lst | 49 0
+| | | |    $ 1 files changed, 49 insertions, 0 deletions
+| | | |    :diff -r c4110a066208 -r 023aa55bd806 clines.lst
+| | | |    :--- /dev/null
+| | | |    :+++ b/clines.lst
+| | | |    :@@ -0,0 +1,49 @@
+| | | |    :+    cat alines.lst | grep 'b' > ablines.lst
+| | | |    :+    cat chgrepo.zsh | grep 'a' > alines.lst
+| | | |    :+    cat chgrepo.zsh | grep 'b' > blines.lst
+| | | |    :+    cat chgrepo.zsh | grep 'd' > dlines.lst
+| | | |    :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ if /^    hg /' > nohglines.lst
+| | | |    :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > datelines.lst
+| | | |    :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > hglines.lst
+| | | |    :+    cat chgrepo.zsh | sort | grep 'c' > clines.lst
+| | | |    :+    cat hglines.lst | rev > hglinesrev.lst
+| | | |    :+    cat nohglines.lst | rev > nohglinesrev.lst
+| | | |    :+    cd testrepo
+| | | |    :+    cp ../createrepo.zsh .
+| | | |    :+    echo 'Abc' > ignoredabc
+| | | |    :+    echo abc >> nohglinesrev.lst
+| | | |    :+    echo 'Def' > addeddef && hg add addeddef
+| | | |    :+    echo $'syntax: glob\nignored*' > .hgignore
+| | | |    :+    hg branch A
+| | | |    :+    hg branch B
+| | | |    :+    hg branch C
+| | | |    :+    hg commit -A -m 'Added ablines.lst' \
+| | | |    :+    hg commit -A -m 'Added alines.lst' \
+| | | |    :+    hg commit -A -m 'Added blines.lst' \
+| | | |    :+    hg commit -A -m 'Added clines.lst' \
+| | | |    :+    hg commit -A -m 'Added «createrepo.zsh»' \
+| | | |    :+    hg commit -A -m 'Added dlines.lst' \
+| | | |    :+    hg commit -A -m 'Added .hgignore' \
+| | | |    :+    hg commit -A -m 'Added «hglines.lst» and «datelines.lst»' \
+| | | |    :+    hg commit -A -m 'Added ignored10.lst' \
+| | | |    :+    hg commit -A -m 'Added nohglines.lst' \
+| | | |    :+    hg commit -A -m 'Added nohglinesrev.lst' \
+| | | |    :+    hg commit -A -m 'Copied “hglines.lst” to “hglines2.lst”' \
+| | | |    :+    hg commit -A -m 'Renamed «createrepo.zsh» to «crepo.zsh»' \
+| | | |    :+    hg commit -A -m 'Renamed «crepo.zsh» to «chgrepo.zsh»' \
+| | | |    :+    hg commit -m 'Merge from A' \
+| | | |    :+    hg commit -m 'Merge from B' \
+| | | |    :+    hg commit -m 'Merge from C' \
+| | | |    :+    hg commit -m 'Merge from C:1' \
+| | | |    :+    hg commit -m 'Merge from C:2' \
+| | | |    :+    hg commit -m $'Replaced\n    {\n        ...\n    }\nwith\n    {\n        ...\n    }' \
+| | | |    :+    hg cp hglines.lst hglines2.lst
+| | | |    :+    hg merge -r clines
+| | | |    :+    hg mv createrepo.zsh crepo.zsh
+| | | |    :+    hg mv crepo.zsh chgrepo.zsh
+| | | |    :+    hg tag clines \
+| | | |    :+local A='A <a@example.com>'
+| | | |    :+local B='B <b@example.org>'
+| | | |    :+local C='C <c@example.gov>'
+| | | |    :+    perl -p -i -e 'tr/{}/{}/' crepo.zsh
+| | | |    :+tar cJf testrepo.tar.xz testrepo
+| | | |    :
+| +-----o  r11 | A <a@example.com> | 2001-02-01 05:19:00 (Чтв, 01 Фев 2001) | 2 lines
+| | | |    
+| | | |    Added tag blines for changeset c4110a066208
+| | | |    
+| | | |    $   .hgtags | 1 0
+| | | |    $ 1 files changed, 1 insertions, 0 deletions
+| | | |    :diff -r c4110a066208 -r 0e6e0adf281b .hgtags
+| | | |    :--- a/.hgtags
+| | | |    :+++ b/.hgtags
+| | | |    :@@ -1,1 +1,2 @@
+| | | |    : c06107b7bcbe751d2dd40faf4179ee7d6aac44ac ablines
+| | | |    :+c4110a066208167dae46b08f4e0d8d2b37e842f3 blines
+| | | |    :
+| o | |  r10 | A <a@example.com> | 2001-02-01 05:18:00 (Чтв, 01 Фев 2001) | 2 lines
+| | | |  
+| | | |  Added blines.lst
+| | | |  
+| | | |  $   blines.lst | 16 0
+| | | |  $ 1 files changed, 16 insertions, 0 deletions
+| | | |  :diff -r 250ba7cd831e -r c4110a066208 blines.lst
+| | | |  :--- /dev/null
+| | | |  :+++ b/blines.lst
+| | | |  :@@ -0,0 +1,16 @@
+| | | |  :+#!/bin/zsh
+| | | |  :+local B='B <b@example.org>'
+| | | |  :+    hg branch A
+| | | |  :+    hg branch B
+| | | |  :+    hg branch C
+| | | |  :+    cat alines.lst | grep 'b' > ablines.lst
+| | | |  :+    hg commit -A -m 'Added ablines.lst' \
+| | | |  :+    hg tag ablines \
+| | | |  :+    hg merge -r ablines
+| | | |  :+    cat chgrepo.zsh | grep 'b' > blines.lst
+| | | |  :+    hg commit -A -m 'Added blines.lst' \
+| | | |  :+    hg tag blines \
+| | | |  :+    hg merge -r blines
+| | | |  :+    echo $'syntax: glob\nignored*' > .hgignore
+| | | |  :+    echo abc >> nohglinesrev.lst
+| | | |  :+    echo 'Abc' > ignoredabc
+| | | |  :
+o | | |    r9 | C <c@example.gov> | 2001-01-01 00:00:00 (Пнд, 01 Янв 2001) | 2 lines
+|\ \ \ \   
+| | | | |  Merge from C
+| | | | |  
+| | | | |  $   ablines.lst |  13 0
+| | | | |  $   alines.lst  |  64 0
+| | | | |  $   dlines.lst  |  52 0
+| | | | |  $ 3 files changed, 129 insertions, 0 deletions
+| | | | |  :diff -r 7e16e7cbaf9e -r 269399222040 ablines.lst
+| | | | |  :--- /dev/null
+| | | | |  :+++ b/ablines.lst
+| | | | |  :@@ -0,0 +1,13 @@
+| | | | |  :+local B='B <b@example.org>'
+| | | | |  :+    hg branch A
+| | | | |  :+    hg branch B
+| | | | |  :+    hg branch C
+| | | | |  :+    cat alines.lst | grep 'b' > ablines.lst
+| | | | |  :+    hg commit -A -m 'Added ablines.lst' \
+| | | | |  :+    hg tag ablines \
+| | | | |  :+    hg merge -r ablines
+| | | | |  :+    cat chgrepo.zsh | grep 'b' > blines.lst
+| | | | |  :+    hg tag blines \
+| | | | |  :+    echo $'syntax: glob\nignored*' > .hgignore
+| | | | |  :+    echo abc >> nohglinesrev.lst
+| | | | |  :+    echo 'Abc' > ignoredabc
+| | | | |  :diff -r 7e16e7cbaf9e -r 269399222040 alines.lst
+| | | | |  :--- /dev/null
+| | | | |  :+++ b/alines.lst
+| | | | |  :@@ -0,0 +1,64 @@
+| | | | |  :+emulate -L zsh
+| | | | |  :+local A='A <a@example.com>'
+| | | | |  :+local B='B <b@example.org>'
+| | | | |  :+local C='C <c@example.gov>'
+| | | | |  :+    cp ../createrepo.zsh .
+| | | | |  :+    # XXX Date test will work only till 2099
+| | | | |  :+    hg commit -A -m 'Added «createrepo.zsh»' \
+| | | | |  :+        --date '1999-01-02 5:20' --user $A
+| | | | |  :+    hg mv createrepo.zsh crepo.zsh
+| | | | |  :+    hg commit -A -m 'Renamed «createrepo.zsh» to «crepo.zsh»' \
+| | | | |  :+        --date '2000-01-05 7:30' --user $A
+| | | | |  :+    hg commit -m $'Replaced\n    {\n        ...\n    }\nwith\n    {\n        ...\n    }' \
+| | | | |  :+        --date '2000-01-15 15:00' --user $B
+| | | | |  :+    hg commit -A -m 'Renamed «crepo.zsh» to «chgrepo.zsh»' \
+| | | | |  :+        --date '2000-02-01 14:00' --user $B
+| | | | |  :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > hglines.lst
+| | | | |  :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > datelines.lst
+| | | | |  :+    hg commit -A -m 'Added «hglines.lst» and «datelines.lst»' \
+| | | | |  :+        --date '2000-05-10 4:23' --user $A
+| | | | |  :+    hg branch A
+| | | | |  :+    cat chgrepo.zsh | grep 'd' > dlines.lst
+| | | | |  :+        --date '2000-11-01 13:24' --user $B
+| | | | |  :+    hg branch B
+| | | | |  :+    cat chgrepo.zsh | grep 'a' > alines.lst
+| | | | |  :+    hg commit -A -m 'Added alines.lst' \
+| | | | |  :+        --date '2000-11-02 5:44' --user $A
+| | | | |  :+    hg branch C
+| | | | |  :+    cat alines.lst | grep 'b' > ablines.lst
+| | | | |  :+    hg commit -A -m 'Added ablines.lst' \
+| | | | |  :+        --date '2000-11-02 14:13' --user $B
+| | | | |  :+    hg tag ablines \
+| | | | |  :+        --date '2000-11-02 14:14' --user $B
+| | | | |  :+    hg update default
+| | | | |  :+    hg merge -r ablines
+| | | | |  :+        --date '2001-01-01 00:00' --user $C
+| | | | |  :+    hg update C
+| | | | |  :+    cat chgrepo.zsh | grep 'b' > blines.lst
+| | | | |  :+        --date '2001-02-01 05:18' --user $A
+| | | | |  :+    hg tag blines \
+| | | | |  :+        --date '2001-02-01 05:19' --user $A
+| | | | |  :+    hg update -r -2
+| | | | |  :+    cat chgrepo.zsh | sort | grep 'c' > clines.lst
+| | | | |  :+        --date '2001-02-01 14:56' --user $B
+| | | | |  :+    hg tag clines \
+| | | | |  :+        --date '2001-02-01 14:56:52' --user $B
+| | | | |  :+    hg update A
+| | | | |  :+        --date '2002-01-01 00:00' --user $C
+| | | | |  :+        --date '2002-01-01 00:00:15' --user $C
+| | | | |  :+    hg update default
+| | | | |  :+        --date '2002-01-01 00:00:30' --user $C
+| | | | |  :+        --date '2002-01-01 00:00:45' --user $C
+| | | | |  :+        --date '2002-02-10 05:00' --user $A
+| | | | |  :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ if /^    hg /' > nohglines.lst
+| | | | |  :+        --date '2002-02-10 15:33' --user $B
+| | | | |  :+    cat nohglines.lst | rev > nohglinesrev.lst
+| | | | |  :+        --date '2002-02-10 16:01' --user $B
+| | | | |  :+        --date '2002-02-11 03:15' --user $A
+| | | | |  :+    echo $'syntax: glob\nignored*' > .hgignore
+| | | | |  :+        --date '2002-02-11 05:43' --user $A
+| | | | |  :+    echo abc >> nohglinesrev.lst
+| | | | |  :+    echo 'Def' > addeddef && hg add addeddef
+| | | | |  :+    cat hglines.lst | rev > hglinesrev.lst
+| | | | |  :+    echo 'Abc' > ignoredabc
+| | | | |  :+tar cJf testrepo.tar.xz testrepo
+| | | | |  :diff -r 7e16e7cbaf9e -r 269399222040 dlines.lst
+| | | | |  :--- /dev/null
+| | | | |  :+++ b/dlines.lst
+| | | | |  :@@ -0,0 +1,52 @@
+| | | | |  :+    cd testrepo
+| | | | |  :+    hg commit -A -m 'Added «createrepo.zsh»' \
+| | | | |  :+        --date '1999-01-02 5:20' --user $A
+| | | | |  :+    hg commit -A -m 'Renamed «createrepo.zsh» to «crepo.zsh»' \
+| | | | |  :+        --date '2000-01-05 7:30' --user $A
+| | | | |  :+    hg commit -m $'Replaced\n    {\n        ...\n    }\nwith\n    {\n        ...\n    }' \
+| | | | |  :+        --date '2000-01-15 15:00' --user $B
+| | | | |  :+    hg commit -A -m 'Renamed «crepo.zsh» to «chgrepo.zsh»' \
+| | | | |  :+        --date '2000-02-01 14:00' --user $B
+| | | | |  :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > hglines.lst
+| | | | |  :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > datelines.lst
+| | | | |  :+    hg commit -A -m 'Added «hglines.lst» and «datelines.lst»' \
+| | | | |  :+        --date '2000-05-10 4:23' --user $A
+| | | | |  :+    cat chgrepo.zsh | grep 'd' > dlines.lst
+| | | | |  :+    hg commit -A -m 'Added dlines.lst' \
+| | | | |  :+        --date '2000-11-01 13:24' --user $B
+| | | | |  :+    hg commit -A -m 'Added alines.lst' \
+| | | | |  :+        --date '2000-11-02 5:44' --user $A
+| | | | |  :+    hg commit -A -m 'Added ablines.lst' \
+| | | | |  :+        --date '2000-11-02 14:13' --user $B
+| | | | |  :+        --date '2000-11-02 14:14' --user $B
+| | | | |  :+    hg update default
+| | | | |  :+        --date '2001-01-01 00:00' --user $C
+| | | | |  :+    hg update C
+| | | | |  :+    hg commit -A -m 'Added blines.lst' \
+| | | | |  :+        --date '2001-02-01 05:18' --user $A
+| | | | |  :+        --date '2001-02-01 05:19' --user $A
+| | | | |  :+    hg update -r -2
+| | | | |  :+    hg commit -A -m 'Added clines.lst' \
+| | | | |  :+        --date '2001-02-01 14:56' --user $B
+| | | | |  :+        --date '2001-02-01 14:56:52' --user $B
+| | | | |  :+    hg update A
+| | | | |  :+        --date '2002-01-01 00:00' --user $C
+| | | | |  :+        --date '2002-01-01 00:00:15' --user $C
+| | | | |  :+    hg update default
+| | | | |  :+        --date '2002-01-01 00:00:30' --user $C
+| | | | |  :+        --date '2002-01-01 00:00:45' --user $C
+| | | | |  :+    hg commit -A -m 'Copied “hglines.lst” to “hglines2.lst”' \
+| | | | |  :+        --date '2002-02-10 05:00' --user $A
+| | | | |  :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ if /^    hg /' > nohglines.lst
+| | | | |  :+    hg commit -A -m 'Added nohglines.lst' \
+| | | | |  :+        --date '2002-02-10 15:33' --user $B
+| | | | |  :+    hg commit -A -m 'Added nohglinesrev.lst' \
+| | | | |  :+        --date '2002-02-10 16:01' --user $B
+| | | | |  :+    seq 1 10 | tr ' ' $'\n' > ignored10.lst
+| | | | |  :+    hg commit -A -m 'Added ignored10.lst' \
+| | | | |  :+        --date '2002-02-11 03:15' --user $A
+| | | | |  :+    echo $'syntax: glob\nignored*' > .hgignore
+| | | | |  :+    hg commit -A -m 'Added .hgignore' \
+| | | | |  :+        --date '2002-02-11 05:43' --user $A
+| | | | |  :+    echo 'Def' > addeddef && hg add addeddef
+| | | | |  :+    echo 'Abc' > ignoredabc
+| | | | |  :
+| | o | |  r8 | B <b@example.org> | 2000-11-02 14:14:00 (Чтв, 02 Ноя 2000) | 2 lines
+| |/ / /   
+| | | |    Added tag ablines for changeset c06107b7bcbe
+| | | |    
+| | | |    $   .hgtags | 1 0
+| | | |    $ 1 files changed, 1 insertions, 0 deletions
+| | | |    :diff -r c06107b7bcbe -r 250ba7cd831e .hgtags
+| | | |    :--- /dev/null
+| | | |    :+++ b/.hgtags
+| | | |    :@@ -0,0 +1,1 @@
+| | | |    :+c06107b7bcbe751d2dd40faf4179ee7d6aac44ac ablines
+| | | |    :
+| o---+  r7 | B <b@example.org> | 2000-11-02 14:13:00 (Чтв, 02 Ноя 2000) | 2 lines
+|   | |  
+|  / /   Added ablines.lst
+| | |    
+| | |    $   ablines.lst | 13 0
+| | |    $ 1 files changed, 13 insertions, 0 deletions
+| | |    :diff -r 9fe0c28c3e1d -r c06107b7bcbe ablines.lst
+| | |    :--- /dev/null
+| | |    :+++ b/ablines.lst
+| | |    :@@ -0,0 +1,13 @@
+| | |    :+local B='B <b@example.org>'
+| | |    :+    hg branch A
+| | |    :+    hg branch B
+| | |    :+    hg branch C
+| | |    :+    cat alines.lst | grep 'b' > ablines.lst
+| | |    :+    hg commit -A -m 'Added ablines.lst' \
+| | |    :+    hg tag ablines \
+| | |    :+    hg merge -r ablines
+| | |    :+    cat chgrepo.zsh | grep 'b' > blines.lst
+| | |    :+    hg tag blines \
+| | |    :+    echo $'syntax: glob\nignored*' > .hgignore
+| | |    :+    echo abc >> nohglinesrev.lst
+| | |    :+    echo 'Abc' > ignoredabc
+| | |    :
+| | o  r6 | A <a@example.com> | 2000-11-02 05:44:00 (Чтв, 02 Ноя 2000) | 2 lines
+| |/   
+| |    Added alines.lst
+| |    
+| |    $   alines.lst | 64 0
+| |    $ 1 files changed, 64 insertions, 0 deletions
+| |    :diff -r d760b0fe4fe4 -r 9fe0c28c3e1d alines.lst
+| |    :--- /dev/null
+| |    :+++ b/alines.lst
+| |    :@@ -0,0 +1,64 @@
+| |    :+emulate -L zsh
+| |    :+local A='A <a@example.com>'
+| |    :+local B='B <b@example.org>'
+| |    :+local C='C <c@example.gov>'
+| |    :+    cp ../createrepo.zsh .
+| |    :+    # XXX Date test will work only till 2099
+| |    :+    hg commit -A -m 'Added «createrepo.zsh»' \
+| |    :+        --date '1999-01-02 5:20' --user $A
+| |    :+    hg mv createrepo.zsh crepo.zsh
+| |    :+    hg commit -A -m 'Renamed «createrepo.zsh» to «crepo.zsh»' \
+| |    :+        --date '2000-01-05 7:30' --user $A
+| |    :+    hg commit -m $'Replaced\n    {\n        ...\n    }\nwith\n    {\n        ...\n    }' \
+| |    :+        --date '2000-01-15 15:00' --user $B
+| |    :+    hg commit -A -m 'Renamed «crepo.zsh» to «chgrepo.zsh»' \
+| |    :+        --date '2000-02-01 14:00' --user $B
+| |    :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > hglines.lst
+| |    :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > datelines.lst
+| |    :+    hg commit -A -m 'Added «hglines.lst» and «datelines.lst»' \
+| |    :+        --date '2000-05-10 4:23' --user $A
+| |    :+    hg branch A
+| |    :+    cat chgrepo.zsh | grep 'd' > dlines.lst
+| |    :+        --date '2000-11-01 13:24' --user $B
+| |    :+    hg branch B
+| |    :+    cat chgrepo.zsh | grep 'a' > alines.lst
+| |    :+    hg commit -A -m 'Added alines.lst' \
+| |    :+        --date '2000-11-02 5:44' --user $A
+| |    :+    hg branch C
+| |    :+    cat alines.lst | grep 'b' > ablines.lst
+| |    :+    hg commit -A -m 'Added ablines.lst' \
+| |    :+        --date '2000-11-02 14:13' --user $B
+| |    :+    hg tag ablines \
+| |    :+        --date '2000-11-02 14:14' --user $B
+| |    :+    hg update default
+| |    :+    hg merge -r ablines
+| |    :+        --date '2001-01-01 00:00' --user $C
+| |    :+    hg update C
+| |    :+    cat chgrepo.zsh | grep 'b' > blines.lst
+| |    :+        --date '2001-02-01 05:18' --user $A
+| |    :+    hg tag blines \
+| |    :+        --date '2001-02-01 05:19' --user $A
+| |    :+    hg update -r -2
+| |    :+    cat chgrepo.zsh | sort | grep 'c' > clines.lst
+| |    :+        --date '2001-02-01 14:56' --user $B
+| |    :+    hg tag clines \
+| |    :+        --date '2001-02-01 14:56:52' --user $B
+| |    :+    hg update A
+| |    :+        --date '2002-01-01 00:00' --user $C
+| |    :+        --date '2002-01-01 00:00:15' --user $C
+| |    :+    hg update default
+| |    :+        --date '2002-01-01 00:00:30' --user $C
+| |    :+        --date '2002-01-01 00:00:45' --user $C
+| |    :+        --date '2002-02-10 05:00' --user $A
+| |    :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ if /^    hg /' > nohglines.lst
+| |    :+        --date '2002-02-10 15:33' --user $B
+| |    :+    cat nohglines.lst | rev > nohglinesrev.lst
+| |    :+        --date '2002-02-10 16:01' --user $B
+| |    :+        --date '2002-02-11 03:15' --user $A
+| |    :+    echo $'syntax: glob\nignored*' > .hgignore
+| |    :+        --date '2002-02-11 05:43' --user $A
+| |    :+    echo abc >> nohglinesrev.lst
+| |    :+    echo 'Def' > addeddef && hg add addeddef
+| |    :+    cat hglines.lst | rev > hglinesrev.lst
+| |    :+    echo 'Abc' > ignoredabc
+| |    :+tar cJf testrepo.tar.xz testrepo
+| |    :
+| o  r5 | B <b@example.org> | 2000-11-01 13:24:00 (Срд, 01 Ноя 2000) | 2 lines
+|/   
+|    Added dlines.lst
+|    
+|    $   dlines.lst | 52 0
+|    $ 1 files changed, 52 insertions, 0 deletions
+|    :diff -r 7e16e7cbaf9e -r d760b0fe4fe4 dlines.lst
+|    :--- /dev/null
+|    :+++ b/dlines.lst
+|    :@@ -0,0 +1,52 @@
+|    :+    cd testrepo
+|    :+    hg commit -A -m 'Added «createrepo.zsh»' \
+|    :+        --date '1999-01-02 5:20' --user $A
+|    :+    hg commit -A -m 'Renamed «createrepo.zsh» to «crepo.zsh»' \
+|    :+        --date '2000-01-05 7:30' --user $A
+|    :+    hg commit -m $'Replaced\n    {\n        ...\n    }\nwith\n    {\n        ...\n    }' \
+|    :+        --date '2000-01-15 15:00' --user $B
+|    :+    hg commit -A -m 'Renamed «crepo.zsh» to «chgrepo.zsh»' \
+|    :+        --date '2000-02-01 14:00' --user $B
+|    :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > hglines.lst
+|    :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > datelines.lst
+|    :+    hg commit -A -m 'Added «hglines.lst» and «datelines.lst»' \
+|    :+        --date '2000-05-10 4:23' --user $A
+|    :+    cat chgrepo.zsh | grep 'd' > dlines.lst
+|    :+    hg commit -A -m 'Added dlines.lst' \
+|    :+        --date '2000-11-01 13:24' --user $B
+|    :+    hg commit -A -m 'Added alines.lst' \
+|    :+        --date '2000-11-02 5:44' --user $A
+|    :+    hg commit -A -m 'Added ablines.lst' \
+|    :+        --date '2000-11-02 14:13' --user $B
+|    :+        --date '2000-11-02 14:14' --user $B
+|    :+    hg update default
+|    :+        --date '2001-01-01 00:00' --user $C
+|    :+    hg update C
+|    :+    hg commit -A -m 'Added blines.lst' \
+|    :+        --date '2001-02-01 05:18' --user $A
+|    :+        --date '2001-02-01 05:19' --user $A
+|    :+    hg update -r -2
+|    :+    hg commit -A -m 'Added clines.lst' \
+|    :+        --date '2001-02-01 14:56' --user $B
+|    :+        --date '2001-02-01 14:56:52' --user $B
+|    :+    hg update A
+|    :+        --date '2002-01-01 00:00' --user $C
+|    :+        --date '2002-01-01 00:00:15' --user $C
+|    :+    hg update default
+|    :+        --date '2002-01-01 00:00:30' --user $C
+|    :+        --date '2002-01-01 00:00:45' --user $C
+|    :+    hg commit -A -m 'Copied “hglines.lst” to “hglines2.lst”' \
+|    :+        --date '2002-02-10 05:00' --user $A
+|    :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ if /^    hg /' > nohglines.lst
+|    :+    hg commit -A -m 'Added nohglines.lst' \
+|    :+        --date '2002-02-10 15:33' --user $B
+|    :+    hg commit -A -m 'Added nohglinesrev.lst' \
+|    :+        --date '2002-02-10 16:01' --user $B
+|    :+    seq 1 10 | tr ' ' $'\n' > ignored10.lst
+|    :+    hg commit -A -m 'Added ignored10.lst' \
+|    :+        --date '2002-02-11 03:15' --user $A
+|    :+    echo $'syntax: glob\nignored*' > .hgignore
+|    :+    hg commit -A -m 'Added .hgignore' \
+|    :+        --date '2002-02-11 05:43' --user $A
+|    :+    echo 'Def' > addeddef && hg add addeddef
+|    :+    echo 'Abc' > ignoredabc
+|    :
+o  r4 | A <a@example.com> | 2000-05-10 04:23:00 (Срд, 10 Май 2000) | 2 lines
+|  
+|  Added «hglines.lst» and «datelines.lst»
+|  
+|  $   datelines.lst | 41 0
+|  $   hglines.lst   | 41 0
+|  $ 2 files changed, 82 insertions, 0 deletions
+|  :diff -r a16a47a8d7aa -r 7e16e7cbaf9e datelines.lst
+|  :--- /dev/null
+|  :+++ b/datelines.lst
+|  :@@ -0,0 +1,41 @@
+|  :+    hg init testrepo
+|  :+    hg commit -A -m 'Added «createrepo.zsh»' \
+|  :+    hg mv createrepo.zsh crepo.zsh
+|  :+    hg commit -A -m 'Renamed «createrepo.zsh» to «crepo.zsh»' \
+|  :+    hg commit -m $'Replaced\n    {\n        ...\n    }\nwith\n    {\n        ...\n    }' \
+|  :+    hg mv crepo.zsh chgrepo.zsh
+|  :+    hg commit -A -m 'Renamed «crepo.zsh» to «chgrepo.zsh»' \
+|  :+    hg commit -A -m 'Added «hglines.lst» and «datelines.lst»' \
+|  :+    hg branch A
+|  :+    hg commit -A -m 'Added dlines.lst' \
+|  :+    hg branch B
+|  :+    hg commit -A -m 'Added alines.lst' \
+|  :+    hg branch C
+|  :+    hg commit -A -m 'Added ablines.lst' \
+|  :+    hg tag ablines \
+|  :+    hg update default
+|  :+    hg merge -r ablines
+|  :+    hg commit -m 'Merge from C' \
+|  :+    hg update C
+|  :+    hg commit -A -m 'Added blines.lst' \
+|  :+    hg tag blines \
+|  :+    hg update -r -2
+|  :+    hg commit -A -m 'Added clines.lst' \
+|  :+    hg tag clines \
+|  :+    hg update A
+|  :+    hg merge -r B
+|  :+    hg commit -m 'Merge from B' \
+|  :+    hg merge -r clines
+|  :+    hg commit -m 'Merge from C:2' \
+|  :+    hg update default
+|  :+    hg merge -r blines
+|  :+    hg commit -m 'Merge from C:1' \
+|  :+    hg merge -r A
+|  :+    hg commit -m 'Merge from A' \
+|  :+    hg cp hglines.lst hglines2.lst
+|  :+    hg commit -A -m 'Copied “hglines.lst” to “hglines2.lst”' \
+|  :+    hg commit -A -m 'Added nohglines.lst' \
+|  :+    hg commit -A -m 'Added nohglinesrev.lst' \
+|  :+    hg commit -A -m 'Added ignored10.lst' \
+|  :+    hg commit -A -m 'Added .hgignore' \
+|  :+    hg rm hglines2.lst
+|  :diff -r a16a47a8d7aa -r 7e16e7cbaf9e hglines.lst
+|  :--- /dev/null
+|  :+++ b/hglines.lst
+|  :@@ -0,0 +1,41 @@
+|  :+    hg init testrepo
+|  :+    hg commit -A -m 'Added «createrepo.zsh»' \
+|  :+    hg mv createrepo.zsh crepo.zsh
+|  :+    hg commit -A -m 'Renamed «createrepo.zsh» to «crepo.zsh»' \
+|  :+    hg commit -m $'Replaced\n    {\n        ...\n    }\nwith\n    {\n        ...\n    }' \
+|  :+    hg mv crepo.zsh chgrepo.zsh
+|  :+    hg commit -A -m 'Renamed «crepo.zsh» to «chgrepo.zsh»' \
+|  :+    hg commit -A -m 'Added «hglines.lst» and «datelines.lst»' \
+|  :+    hg branch A
+|  :+    hg commit -A -m 'Added dlines.lst' \
+|  :+    hg branch B
+|  :+    hg commit -A -m 'Added alines.lst' \
+|  :+    hg branch C
+|  :+    hg commit -A -m 'Added ablines.lst' \
+|  :+    hg tag ablines \
+|  :+    hg update default
+|  :+    hg merge -r ablines
+|  :+    hg commit -m 'Merge from C' \
+|  :+    hg update C
+|  :+    hg commit -A -m 'Added blines.lst' \
+|  :+    hg tag blines \
+|  :+    hg update -r -2
+|  :+    hg commit -A -m 'Added clines.lst' \
+|  :+    hg tag clines \
+|  :+    hg update A
+|  :+    hg merge -r B
+|  :+    hg commit -m 'Merge from B' \
+|  :+    hg merge -r clines
+|  :+    hg commit -m 'Merge from C:2' \
+|  :+    hg update default
+|  :+    hg merge -r blines
+|  :+    hg commit -m 'Merge from C:1' \
+|  :+    hg merge -r A
+|  :+    hg commit -m 'Merge from A' \
+|  :+    hg cp hglines.lst hglines2.lst
+|  :+    hg commit -A -m 'Copied “hglines.lst” to “hglines2.lst”' \
+|  :+    hg commit -A -m 'Added nohglines.lst' \
+|  :+    hg commit -A -m 'Added nohglinesrev.lst' \
+|  :+    hg commit -A -m 'Added ignored10.lst' \
+|  :+    hg commit -A -m 'Added .hgignore' \
+|  :+    hg rm hglines2.lst
+|  :
+o  r3 | B <b@example.org> | 2000-02-01 14:00:00 (Втр, 01 Фев 2000) | 2 lines
+|  
+|  Renamed «crepo.zsh» to «chgrepo.zsh»
+|  
+|  $   chgrepo.zsh | 94  0
+|  $   crepo.zsh   |  0 94
+|  $ 2 files changed, 94 insertions, 94 deletions
+|  :diff -r 5a6a1bf999fa -r a16a47a8d7aa chgrepo.zsh
+|  :--- /dev/null
+|  :+++ b/chgrepo.zsh
+|  :@@ -0,0 +1,94 @@
+|  :+#!/bin/zsh
+|  :+emulate -L zsh
+|  :+set -e
+|  :+local A='A <a@example.com>'
+|  :+local B='B <b@example.org>'
+|  :+local C='C <c@example.gov>'
+|  :+{
+|  :+    set -e
+|  :+    hg init testrepo
+|  :+    cd testrepo
+|  :+    cp ../createrepo.zsh .
+|  :+    # XXX Date test will work only till 2099
+|  :+    hg commit -A -m 'Added «createrepo.zsh»' \
+|  :+        --date '1999-01-02 5:20' --user $A
+|  :+    hg mv createrepo.zsh crepo.zsh
+|  :+    hg commit -A -m 'Renamed «createrepo.zsh» to «crepo.zsh»' \
+|  :+        --date '2000-01-05 7:30' --user $A
+|  :+    perl -p -i -e 'tr/{}/{}/' crepo.zsh
+|  :+    hg commit -m $'Replaced\n    {\n        ...\n    }\nwith\n    {\n        ...\n    }' \
+|  :+        --date '2000-01-15 15:00' --user $B
+|  :+    hg mv crepo.zsh chgrepo.zsh
+|  :+    hg commit -A -m 'Renamed «crepo.zsh» to «chgrepo.zsh»' \
+|  :+        --date '2000-02-01 14:00' --user $B
+|  :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > hglines.lst
+|  :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > datelines.lst
+|  :+    hg commit -A -m 'Added «hglines.lst» and «datelines.lst»' \
+|  :+        --date '2000-05-10 4:23' --user $A
+|  :+    hg branch A
+|  :+    cat chgrepo.zsh | grep 'd' > dlines.lst
+|  :+    hg commit -A -m 'Added dlines.lst' \
+|  :+        --date '2000-11-01 13:24' --user $B
+|  :+    hg branch B
+|  :+    cat chgrepo.zsh | grep 'a' > alines.lst
+|  :+    hg commit -A -m 'Added alines.lst' \
+|  :+        --date '2000-11-02 5:44' --user $A
+|  :+    hg branch C
+|  :+    cat alines.lst | grep 'b' > ablines.lst
+|  :+    hg commit -A -m 'Added ablines.lst' \
+|  :+        --date '2000-11-02 14:13' --user $B
+|  :+    hg tag ablines \
+|  :+        --date '2000-11-02 14:14' --user $B
+|  :+    hg update default
+|  :+    hg merge -r ablines
+|  :+    hg commit -m 'Merge from C' \
+|  :+        --date '2001-01-01 00:00' --user $C
+|  :+    hg update C
+|  :+    cat chgrepo.zsh | grep 'b' > blines.lst
+|  :+    hg commit -A -m 'Added blines.lst' \
+|  :+        --date '2001-02-01 05:18' --user $A
+|  :+    hg tag blines \
+|  :+        --date '2001-02-01 05:19' --user $A
+|  :+    hg update -r -2
+|  :+    cat chgrepo.zsh | sort | grep 'c' > clines.lst
+|  :+    hg commit -A -m 'Added clines.lst' \
+|  :+        --date '2001-02-01 14:56' --user $B
+|  :+    hg tag clines \
+|  :+        --date '2001-02-01 14:56:52' --user $B
+|  :+    hg update A
+|  :+    hg merge -r B
+|  :+    hg commit -m 'Merge from B' \
+|  :+        --date '2002-01-01 00:00' --user $C
+|  :+    hg merge -r clines
+|  :+    hg commit -m 'Merge from C:2' \
+|  :+        --date '2002-01-01 00:00:15' --user $C
+|  :+    hg update default
+|  :+    hg merge -r blines
+|  :+    hg commit -m 'Merge from C:1' \
+|  :+        --date '2002-01-01 00:00:30' --user $C
+|  :+    hg merge -r A
+|  :+    hg commit -m 'Merge from A' \
+|  :+        --date '2002-01-01 00:00:45' --user $C
+|  :+    hg cp hglines.lst hglines2.lst
+|  :+    hg commit -A -m 'Copied “hglines.lst” to “hglines2.lst”' \
+|  :+        --date '2002-02-10 05:00' --user $A
+|  :+    cat chgrepo.zsh | perl -p -i -e 'undef $_ if /^    hg /' > nohglines.lst
+|  :+    hg commit -A -m 'Added nohglines.lst' \
+|  :+        --date '2002-02-10 15:33' --user $B
+|  :+    cat nohglines.lst | rev > nohglinesrev.lst
+|  :+    hg commit -A -m 'Added nohglinesrev.lst' \
+|  :+        --date '2002-02-10 16:01' --user $B
+|  :+    seq 1 10 | tr ' ' $'\n' > ignored10.lst
+|  :+    hg commit -A -m 'Added ignored10.lst' \
+|  :+        --date '2002-02-11 03:15' --user $A
+|  :+    echo $'syntax: glob\nignored*' > .hgignore
+|  :+    hg commit -A -m 'Added .hgignore' \
+|  :+        --date '2002-02-11 05:43' --user $A
+|  :+    echo abc >> nohglinesrev.lst
+|  :+    echo 'Def' > addeddef && hg add addeddef
+|  :+    hg rm hglines2.lst
+|  :+    rm nohglines.lst
+|  :+    cat hglines.lst | rev > hglinesrev.lst
+|  :+    echo 'Abc' > ignoredabc
+|  :+}
+|  :+tar cJf testrepo.tar.xz testrepo
+|  :diff -r 5a6a1bf999fa -r a16a47a8d7aa crepo.zsh
+|  :--- a/crepo.zsh
+|  :+++ /dev/null
+|  :@@ -1,94 +0,0 @@
+|  :-#!/bin/zsh
+|  :-emulate -L zsh
+|  :-set -e
+|  :-local A='A <a@example.com>'
+|  :-local B='B <b@example.org>'
+|  :-local C='C <c@example.gov>'
+|  :-{
+|  :-    set -e
+|  :-    hg init testrepo
+|  :-    cd testrepo
+|  :-    cp ../createrepo.zsh .
+|  :-    # XXX Date test will work only till 2099
+|  :-    hg commit -A -m 'Added «createrepo.zsh»' \
+|  :-        --date '1999-01-02 5:20' --user $A
+|  :-    hg mv createrepo.zsh crepo.zsh
+|  :-    hg commit -A -m 'Renamed «createrepo.zsh» to «crepo.zsh»' \
+|  :-        --date '2000-01-05 7:30' --user $A
+|  :-    perl -p -i -e 'tr/{}/{}/' crepo.zsh
+|  :-    hg commit -m $'Replaced\n    {\n        ...\n    }\nwith\n    {\n        ...\n    }' \
+|  :-        --date '2000-01-15 15:00' --user $B
+|  :-    hg mv crepo.zsh chgrepo.zsh
+|  :-    hg commit -A -m 'Renamed «crepo.zsh» to «chgrepo.zsh»' \
+|  :-        --date '2000-02-01 14:00' --user $B
+|  :-    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > hglines.lst
+|  :-    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > datelines.lst
+|  :-    hg commit -A -m 'Added «hglines.lst» and «datelines.lst»' \
+|  :-        --date '2000-05-10 4:23' --user $A
+|  :-    hg branch A
+|  :-    cat chgrepo.zsh | grep 'd' > dlines.lst
+|  :-    hg commit -A -m 'Added dlines.lst' \
+|  :-        --date '2000-11-01 13:24' --user $B
+|  :-    hg branch B
+|  :-    cat chgrepo.zsh | grep 'a' > alines.lst
+|  :-    hg commit -A -m 'Added alines.lst' \
+|  :-        --date '2000-11-02 5:44' --user $A
+|  :-    hg branch C
+|  :-    cat alines.lst | grep 'b' > ablines.lst
+|  :-    hg commit -A -m 'Added ablines.lst' \
+|  :-        --date '2000-11-02 14:13' --user $B
+|  :-    hg tag ablines \
+|  :-        --date '2000-11-02 14:14' --user $B
+|  :-    hg update default
+|  :-    hg merge -r ablines
+|  :-    hg commit -m 'Merge from C' \
+|  :-        --date '2001-01-01 00:00' --user $C
+|  :-    hg update C
+|  :-    cat chgrepo.zsh | grep 'b' > blines.lst
+|  :-    hg commit -A -m 'Added blines.lst' \
+|  :-        --date '2001-02-01 05:18' --user $A
+|  :-    hg tag blines \
+|  :-        --date '2001-02-01 05:19' --user $A
+|  :-    hg update -r -2
+|  :-    cat chgrepo.zsh | sort | grep 'c' > clines.lst
+|  :-    hg commit -A -m 'Added clines.lst' \
+|  :-        --date '2001-02-01 14:56' --user $B
+|  :-    hg tag clines \
+|  :-        --date '2001-02-01 14:56:52' --user $B
+|  :-    hg update A
+|  :-    hg merge -r B
+|  :-    hg commit -m 'Merge from B' \
+|  :-        --date '2002-01-01 00:00' --user $C
+|  :-    hg merge -r clines
+|  :-    hg commit -m 'Merge from C:2' \
+|  :-        --date '2002-01-01 00:00:15' --user $C
+|  :-    hg update default
+|  :-    hg merge -r blines
+|  :-    hg commit -m 'Merge from C:1' \
+|  :-        --date '2002-01-01 00:00:30' --user $C
+|  :-    hg merge -r A
+|  :-    hg commit -m 'Merge from A' \
+|  :-        --date '2002-01-01 00:00:45' --user $C
+|  :-    hg cp hglines.lst hglines2.lst
+|  :-    hg commit -A -m 'Copied “hglines.lst” to “hglines2.lst”' \
+|  :-        --date '2002-02-10 05:00' --user $A
+|  :-    cat chgrepo.zsh | perl -p -i -e 'undef $_ if /^    hg /' > nohglines.lst
+|  :-    hg commit -A -m 'Added nohglines.lst' \
+|  :-        --date '2002-02-10 15:33' --user $B
+|  :-    cat nohglines.lst | rev > nohglinesrev.lst
+|  :-    hg commit -A -m 'Added nohglinesrev.lst' \
+|  :-        --date '2002-02-10 16:01' --user $B
+|  :-    seq 1 10 | tr ' ' $'\n' > ignored10.lst
+|  :-    hg commit -A -m 'Added ignored10.lst' \
+|  :-        --date '2002-02-11 03:15' --user $A
+|  :-    echo $'syntax: glob\nignored*' > .hgignore
+|  :-    hg commit -A -m 'Added .hgignore' \
+|  :-        --date '2002-02-11 05:43' --user $A
+|  :-    echo abc >> nohglinesrev.lst
+|  :-    echo 'Def' > addeddef && hg add addeddef
+|  :-    hg rm hglines2.lst
+|  :-    rm nohglines.lst
+|  :-    cat hglines.lst | rev > hglinesrev.lst
+|  :-    echo 'Abc' > ignoredabc
+|  :-}
+|  :-tar cJf testrepo.tar.xz testrepo
+|  :
+o  r2 | B <b@example.org> | 2000-01-15 15:00:00 (Сбт, 15 Янв 2000) | 9 lines
+|  
+|  Replaced
+|      (
+|          ...
+|      )
+|  with
+|      {
+|          ...
+|      }
+|  
+|  $   crepo.zsh | 4 4
+|  $ 1 files changed, 4 insertions, 4 deletions
+|  :diff -r dfe39aa48c6d -r 5a6a1bf999fa crepo.zsh
+|  :--- a/crepo.zsh
+|  :+++ b/crepo.zsh
+|  :@@ -4,7 +4,7 @@
+|  : local A='A <a@example.com>'
+|  : local B='B <b@example.org>'
+|  : local C='C <c@example.gov>'
+|  :-(
+|  :+{
+|  :     set -e
+|  :     hg init testrepo
+|  :     cd testrepo
+|  :@@ -15,8 +15,8 @@
+|  :     hg mv createrepo.zsh crepo.zsh
+|  :     hg commit -A -m 'Renamed «createrepo.zsh» to «crepo.zsh»' \
+|  :         --date '2000-01-05 7:30' --user $A
+|  :-    perl -p -i -e 'tr/()/{}/' crepo.zsh
+|  :-    hg commit -m $'Replaced\n    (\n        ...\n    )\nwith\n    {\n        ...\n    }' \
+|  :+    perl -p -i -e 'tr/{}/{}/' crepo.zsh
+|  :+    hg commit -m $'Replaced\n    {\n        ...\n    }\nwith\n    {\n        ...\n    }' \
+|  :         --date '2000-01-15 15:00' --user $B
+|  :     hg mv crepo.zsh chgrepo.zsh
+|  :     hg commit -A -m 'Renamed «crepo.zsh» to «chgrepo.zsh»' \
+|  :@@ -90,5 +90,5 @@
+|  :     rm nohglines.lst
+|  :     cat hglines.lst | rev > hglinesrev.lst
+|  :     echo 'Abc' > ignoredabc
+|  :-)
+|  :+}
+|  : tar cJf testrepo.tar.xz testrepo
+|  :
+o  r1 | A <a@example.com> | 2000-01-05 07:30:00 (Срд, 05 Янв 2000) | 2 lines
+|  
+|  Renamed «createrepo.zsh» to «crepo.zsh»
+|  
+|  $   createrepo.zsh |  0 94
+|  $   crepo.zsh      | 94  0
+|  $ 2 files changed, 94 insertions, 94 deletions
+|  :diff -r 99ea42d70fbe -r dfe39aa48c6d createrepo.zsh
+|  :--- a/createrepo.zsh
+|  :+++ /dev/null
+|  :@@ -1,94 +0,0 @@
+|  :-#!/bin/zsh
+|  :-emulate -L zsh
+|  :-set -e
+|  :-local A='A <a@example.com>'
+|  :-local B='B <b@example.org>'
+|  :-local C='C <c@example.gov>'
+|  :-(
+|  :-    set -e
+|  :-    hg init testrepo
+|  :-    cd testrepo
+|  :-    cp ../createrepo.zsh .
+|  :-    # XXX Date test will work only till 2099
+|  :-    hg commit -A -m 'Added «createrepo.zsh»' \
+|  :-        --date '1999-01-02 5:20' --user $A
+|  :-    hg mv createrepo.zsh crepo.zsh
+|  :-    hg commit -A -m 'Renamed «createrepo.zsh» to «crepo.zsh»' \
+|  :-        --date '2000-01-05 7:30' --user $A
+|  :-    perl -p -i -e 'tr/()/{}/' crepo.zsh
+|  :-    hg commit -m $'Replaced\n    (\n        ...\n    )\nwith\n    {\n        ...\n    }' \
+|  :-        --date '2000-01-15 15:00' --user $B
+|  :-    hg mv crepo.zsh chgrepo.zsh
+|  :-    hg commit -A -m 'Renamed «crepo.zsh» to «chgrepo.zsh»' \
+|  :-        --date '2000-02-01 14:00' --user $B
+|  :-    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > hglines.lst
+|  :-    cat chgrepo.zsh | perl -p -i -e 'undef $_ unless /^    hg /' > datelines.lst
+|  :-    hg commit -A -m 'Added «hglines.lst» and «datelines.lst»' \
+|  :-        --date '2000-05-10 4:23' --user $A
+|  :-    hg branch A
+|  :-    cat chgrepo.zsh | grep 'd' > dlines.lst
+|  :-    hg commit -A -m 'Added dlines.lst' \
+|  :-        --date '2000-11-01 13:24' --user $B
+|  :-    hg branch B
+|  :-    cat chgrepo.zsh | grep 'a' > alines.lst
+|  :-    hg commit -A -m 'Added alines.lst' \
+|  :-        --date '2000-11-02 5:44' --user $A
+|  :-    hg branch C
+|  :-    cat alines.lst | grep 'b' > ablines.lst
+|  :-    hg commit -A -m 'Added ablines.lst' \
+|  :-        --date '2000-11-02 14:13' --user $B
+|  :-    hg tag ablines \
+|  :-        --date '2000-11-02 14:14' --user $B
+|  :-    hg update default
+|  :-    hg merge -r ablines
+|  :-    hg commit -m 'Merge from C' \
+|  :-        --date '2001-01-01 00:00' --user $C
+|  :-    hg update C
+|  :-    cat chgrepo.zsh | grep 'b' > blines.lst
+|  :-    hg commit -A -m 'Added blines.lst' \
+|  :-        --date '2001-02-01 05:18' --user $A
+|  :-    hg tag blines \
+|  :-        --date '2001-02-01 05:19' --user $A
+|  :-    hg update -r -2
+|  :-    cat chgrepo.zsh | sort | grep 'c' > clines.lst
+|  :-    hg commit -A -m 'Added clines.lst' \
+|  :-        --date '2001-02-01 14:56' --user $B
+|  :-    hg tag clines \
+|  :-        --date '2001-02-01 14:56:52' --user $B
+|  :-    hg update A
+|  :-    hg merge -r B
+|  :-    hg commit -m 'Merge from B' \
+|  :-        --date '2002-01-01 00:00' --user $C
+|  :-    hg merge -r clines
+|  :-    hg commit -m 'Merge from C:2' \
+|  :-        --date '2002-01-01 00:00:15' --user $C
+|  :-    hg update default
+|  :-    hg merge -r blines
+|  :-    hg commit -m 'Merge from C:1' \
+|  :-        --date '2002-01-01 00:00:30' --user $C
+|  :-    hg merge -r A
+|  :-    hg commit -m 'Merge from A' \
+|  :-        --date '2002-01-01 00:00:45' --user $C
+|  :-    hg cp hglines.lst hglines2.lst
+|  :-    hg commit -A -m 'Copied “hglines.lst” to “hglines2.lst”' \
+|  :-        --date '2002-02-10 05:00' --user $A
+|  :-    cat chgrepo.zsh | perl -p -i -e 'undef $_ if /^    hg /' > nohglines.lst
+|  :-    hg commit -A -m 'Added nohglines.lst' \
+|  :-        --date '2002-02-10 15:33' --user $B
+|  :-    cat nohglines.lst | rev > nohglinesrev.lst
+|  :-    hg commit -A -m 'Added nohglinesrev.lst' \
+|  :-        --date '2002-02-10 16:01' --user $B
+|  :-    seq 1 10 | tr ' ' $'\n' > ignored10.lst
+|  :-    hg commit -A -m 'Added ignored10.lst' \
+|  :-        --date '2002-02-11 03:15' --user $A
+|  :-    echo $'syntax: glob\nignored*' > .hgignore
+|  :-    hg commit -A -m 'Added .hgignore' \
+|  :-        --date '2002-02-11 05:43' --user $A
+|  :-    echo abc >> nohglinesrev.lst
+|  :-    echo 'Def' > addeddef && hg add addeddef
+|  :-    hg rm hglines2.lst
+|  :-    rm nohglines.lst
+|  :-    cat hglines.lst | rev > hglinesrev.lst
+|  :-    echo 'Abc' > ignoredabc
+|  :-)
+|  :-tar cJf testrepo.tar.xz testrepo
+|  :diff -r 99ea42d70fbe -r dfe39aa48c6d crepo.zsh
+|  :--- /dev/null
+|  :+++ b/crepo.zsh
+|  :@@ -0,0 +1,94 @@
+|  :+#!/bin/zsh
+|  :+emulate -L zsh
+|  :+set -e
+|  :+local A='A <a@example.com>'
+|  :+local B='B <b@example.org>'
+|  :+local C='C <c@example.gov>'
+|  :+(
+|  :+    set -e
+|  :+    hg init testrepo
+|  :+    cd testrepo
+|  :+    cp ../createrepo.zsh .
+|  :+    # XXX Date test will work only till 2099
+|  :+    hg commit -A -m 'Added «createrepo.zsh»' \
+|  :+        --date '1999-01-02 5:20' --user $A
+|  :+    hg mv createrepo.zsh crepo.zsh
+|  :+    hg commit -A -m 'Renamed «createrepo.zsh» to «crepo.zsh»' \
+|  :+        --date '2000-01-05 7:30' --user $A
+|  :+    perl -p -i -e 'tr/()/{}/' crepo.zsh
+|  :+    hg commit -m $'Replaced\n    (\n        ...\n    )\nwith\n    {\n        ...\n    }' \
+|  :+        --date '2000-01-15 15:00' --user $B
+|  :+    hg mv crepo.zsh chgrepo.zsh
+|  :+    hg commit -A -m 'Renamed «crepo.zsh» to «chgrepo.zsh»' \
+|  :+        --date '2000-02-01 14:00' --user $B