Differences between revisions 3 and 8 (spanning 5 versions)
Revision 3 as of 2012-02-28 14:54:17
Size: 2545
Comment: Fill "To Do" section
Revision 8 as of 2012-11-06 23:07:02
Size: 2600
Editor: abuehl
Comment: fix category
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:

<<Include(A:dev)>>
Line 7: Line 9:
== Work in Progress == == Done ==
Line 23: Line 25:
=== http://selenic.com/pipermail/mercurial-devel/2012-February/038322.html === === http://selenic.com/pipermail/mercurial-devel/2012-March/038869.html ===
Line 25: Line 27:
[[http://selenic.com/pipermail/mercurial-devel/2012-February/038322.html]] [[http://selenic.com/pipermail/mercurial-devel/2012-March/038869.html]]
Line 27: Line 29:
 * revset: add hidden() revset, undocumented
 * graphlog: support --hidden
 * Improve --only-branch
 * Support old-style --rev

=== http://selenic.com/pipermail/mercurial-devel/2012-April/039148.html ===

[[http://selenic.com/pipermail/mercurial-devel/2012-April/039148.html]]

 * Refactor graphlog.revset() to return revisions
 * Fix --follow/--follow-first again
 * Fix --branch lookup
 * Fix calls in subdirectories
 * Fix performance regression related to the order of evaluation of changesets in revsets

=== Mercurial 2.3 ===

 * Implement --hidden. At this point, the revset version is feature complete and pass all tests.
 * Move graphlog code in core, add default support for log --graph, leave almost empty graphlog extension.
 * Support outgoing/incoming --graphlog by default.
Line 34: Line 52:
 1. Make "pats" unique after their expansion if they are not already. They are used to generate follow()/file() expressions in the fast path
 1. 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).
 1. Replace commands.log() and cmdutil.walkchangerevs() with graphlog.graphlog(). Run the tests and see what was missed. Make it feature complete.
 1. 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.
 1. Think a bit about killing hgext/graphlog.py, compatibility and perhaps leaving stubs here.
 1. Turn revset.match() into a generator. Otherwise the time to first byte with --limit queries is too large.
 1. Maybe invent something to handle multiple predicated like "--user foo --user bar" without scanning the changelog multiple times.
Line 54: Line 69:
CategoryAudit CategoryDeveloper

Note:

This page is primarily intended for developers of Mercurial.

Merging Graphlog in Core

1. Done

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

  • graphlog: implement --copies
  • graphlog: evaluate FILE/-I/-X filesets on the working dir
  • match: consider filesets as "anypats"
  • test-glog: rewrite more tests using testlog() function
  • graphlog: fix --removed
  • context: add followfirst arg to filectx and workingfilectx
  • graphlog: apply file filters --patch/--stat output

1.2. http://selenic.com/pipermail/mercurial-devel/2012-March/038869.html

http://selenic.com/pipermail/mercurial-devel/2012-March/038869.html

  • Improve --only-branch
  • Support old-style --rev

1.3. http://selenic.com/pipermail/mercurial-devel/2012-April/039148.html

http://selenic.com/pipermail/mercurial-devel/2012-April/039148.html

  • Refactor graphlog.revset() to return revisions
  • Fix --follow/--follow-first again
  • Fix --branch lookup
  • Fix calls in subdirectories
  • Fix performance regression related to the order of evaluation of changesets in revsets

1.4. Mercurial 2.3

  • Implement --hidden. At this point, the revset version is feature complete and pass all tests.
  • Move graphlog code in core, add default support for log --graph, leave almost empty graphlog extension.
  • Support outgoing/incoming --graphlog by default.

2. To Do

2.1. log command

  1. Turn revset.match() into a generator. Otherwise the time to first byte with --limit queries is too large.
  2. Maybe invent something to handle multiple predicated like "--user foo --user bar" without scanning the changelog multiple times.
  3. 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


CategoryDeveloper

MergingGraphlogInCorePlan (last edited 2012-11-06 23:07:02 by abuehl)