Merging Graphlog in Core

1. Work in Progress

With these submitted patches, graphlog supports the same options as log command, and we can consider merging boths:

1.1. http://selenic.com/pipermail/mercurial-devel/2012-February/038269.html

http://selenic.com/pipermail/mercurial-devel/2012-February/038269.html

1.2. http://selenic.com/pipermail/mercurial-devel/2012-February/038322.html

http://selenic.com/pipermail/mercurial-devel/2012-February/038322.html

2. To Do

2.1. log command

  1. Make "pats" unique after their expansion if they are not already. They are used to generate follow()/file() expressions in the fast path
  2. Check escaping/injection issues. We already have a test for --branch and I am not sure there are more issues with regular options, but we certainly want to parse the --rev expressions before adding them to the synthetic revset (like revset.formatspec() does).
  3. Replace commands.log() and cmdutil.walkchangerevs() with graphlog.graphlog(). Run the tests and see what was missed. Make it feature complete.
  4. Profile the revsets. Most of them are single functions. There are 2 or 3 "not something()" and --prune is a bit more complicated. Note sure there is much to do except tweak the expression weights.
  5. Think a bit about killing hgext/graphlog.py, compatibility and perhaps leaving stubs here.
  6. Profit!

2.2. incoming/outgoing commands

  1. Decide what to do about --newest-first
  2. ? Look at hg._incoming()/_outgoing() (recurse in subrepos ?)

2.3. random improvements

  1. Improve the error message on --follow FILE --removed, issue2139

  2. Document that "hg log 'set:added()'" is not the same than "hg log -r 'file("set:added()")'"
  3. Mention filesets in "hg help patterns" before the last line
  4. Display renames correctly with "hg log --follow file", see the second part of this changelog for details


CategoryAudit