tests/test-empty-group.t
author Jordi Gutiérrez Hermoso <jordigh@octave.org>
Fri, 03 Oct 2014 19:48:56 -0400
changeset 22766 0ded0f0b1c04
parent 14162 301725c3df9a
child 34661 eb586ed5d8ce
permissions -rw-r--r--
log: rewrite default template to use labels (issue2866) This is a complete rewrite of the default template to use labels. This seems ultimately useless to me in most cases. The biggest benefit of this patch to me seems to be a fairly complicated example of the templating engine. It was a lot of hard work to figure out the precise acceptable syntax, since it's almost undocumented. Hat tip to Steve Losh's smartlog template, which helped me figure out a lot of the syntax. Hopefully later I can use the present default log template as an example for documenting the templating engine. A test is attached. My goal was to match the --color=debug output, which may differ slightly in newlines from the actual ANSI escape codes output. I consider this an acceptable invisible deviation. There seems to be a considerable slowdown with this rewrite. Before: $ time hg log -T default -r .~100::. > /dev/null real 0m0.882s user 0m0.812s sys 0m0.064s $ time hg log -T default -r .~100::. > /dev/null real 0m0.872s user 0m0.796s sys 0m0.068s $ time hg log -T default -r .~100::. > /dev/null real 0m0.917s user 0m0.836s sys 0m0.076s After: $ time hg log -T default -r .~100::. > /dev/null real 0m1.480s user 0m1.392s sys 0m0.072s $ time hg log -T default -r .~100::. > /dev/null real 0m1.500s user 0m1.400s sys 0m0.088s $ time hg log -T default -r .~100::. > /dev/null real 0m1.462s user 0m1.364s sys 0m0.092s Following the maxim, "make it work, profile, make it faster, in that order", I deem this slowdown acceptable for now. I suspect but have not confirmed that a big slowdown comes from calling keywords twice in the file templates, once to test the existence of output and again to actually list the output. If so, a simple speedup might be to improve the templating engine to cache keywords when called more than once on the same revision. TODO: I found a bug while working on this. The following stack traces: hg log -r . -T '{ifcontains(phase, "secret public", "lol", "omg")}\n'

#  A          B
#
#  3  4       3
#  |\/|       |\
#  |/\|       | \
#  1  2       1  2
#  \ /        \ /
#   0          0
#
# if the result of the merge of 1 and 2
# is the same in 3 and 4, no new manifest
# will be created and the manifest group
# will be empty during the pull
#
# (plus we test a failure where outgoing
# wrongly reported the number of csets)

  $ hg init a
  $ cd a
  $ touch init
  $ hg ci -A -m 0
  adding init
  $ touch x y
  $ hg ci -A -m 1
  adding x
  adding y

  $ hg update 0
  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
  $ touch x y
  $ hg ci -A -m 2
  adding x
  adding y
  created new head

  $ hg merge 1
  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
  (branch merge, don't forget to commit)
  $ hg ci -A -m m1

  $ hg update -C 1
  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ hg merge 2
  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
  (branch merge, don't forget to commit)
  $ hg ci -A -m m2
  created new head

  $ cd ..

  $ hg clone -r 3 a b
  adding changesets
  adding manifests
  adding file changes
  added 4 changesets with 3 changes to 3 files
  updating to branch default
  3 files updated, 0 files merged, 0 files removed, 0 files unresolved

  $ hg clone -r 4 a c
  adding changesets
  adding manifests
  adding file changes
  added 4 changesets with 3 changes to 3 files
  updating to branch default
  3 files updated, 0 files merged, 0 files removed, 0 files unresolved

  $ hg -R a outgoing b
  comparing with b
  searching for changes
  changeset:   4:1ec3c74fc0e0
  tag:         tip
  parent:      1:79f9e10cd04e
  parent:      2:8e1bb01c1a24
  user:        test
  date:        Thu Jan 01 00:00:00 1970 +0000
  summary:     m2
  
  $ hg -R a outgoing c
  comparing with c
  searching for changes
  changeset:   3:d15a0c284984
  parent:      2:8e1bb01c1a24
  parent:      1:79f9e10cd04e
  user:        test
  date:        Thu Jan 01 00:00:00 1970 +0000
  summary:     m1
  
  $ hg -R b outgoing c
  comparing with c
  searching for changes
  changeset:   3:d15a0c284984
  tag:         tip
  parent:      2:8e1bb01c1a24
  parent:      1:79f9e10cd04e
  user:        test
  date:        Thu Jan 01 00:00:00 1970 +0000
  summary:     m1
  
  $ hg -R c outgoing b
  comparing with b
  searching for changes
  changeset:   3:1ec3c74fc0e0
  tag:         tip
  parent:      1:79f9e10cd04e
  parent:      2:8e1bb01c1a24
  user:        test
  date:        Thu Jan 01 00:00:00 1970 +0000
  summary:     m2
  

  $ hg -R b pull a
  pulling from a
  searching for changes
  adding changesets
  adding manifests
  adding file changes
  added 1 changesets with 0 changes to 0 files (+1 heads)
  (run 'hg heads' to see heads, 'hg merge' to merge)

  $ hg -R c pull a
  pulling from a
  searching for changes
  adding changesets
  adding manifests
  adding file changes
  added 1 changesets with 0 changes to 0 files (+1 heads)
  (run 'hg heads' to see heads, 'hg merge' to merge)