[PATCH 3 of 4] log: support --graph without graphlog extension

Patrick Mezard patrick at mezard.eu
Sat Jul 14 12:17:51 CDT 2012


# HG changeset patch
# User Patrick Mezard <patrick at mezard.eu>
# Date 1342285762 -7200
# Node ID 248814e31ac44ff6a182be11a6de319faa25459e
# Parent  468ceb9f0e3e76b526c43b2d9d05a471d9c7932b
log: support --graph without graphlog extension

The glog command is preserved in the extension for backward compatibility.

diff --git a/hgext/graphlog.py b/hgext/graphlog.py
--- a/hgext/graphlog.py
+++ b/hgext/graphlog.py
@@ -14,8 +14,8 @@
 
 from mercurial.cmdutil import show_changeset
 from mercurial.i18n import _
-from mercurial import cmdutil, commands, extensions, scmutil
-from mercurial import hg, util, graphmod, templatekw
+from mercurial import cmdutil, commands, extensions
+from mercurial import hg, util, graphmod
 
 cmdtable = {}
 command = cmdutil.command(cmdtable)
@@ -59,24 +59,7 @@
     Nodes printed as an @ character are parents of the working
     directory.
     """
-
-    revs, expr, filematcher = cmdutil.getgraphlogrevs(repo, pats, opts)
-    revs = sorted(revs, reverse=1)
-    limit = cmdutil.loglimit(opts)
-    if limit is not None:
-        revs = revs[:limit]
-    revdag = graphmod.dagwalker(repo, revs)
-
-    getrenamed = None
-    if opts.get('copies'):
-        endrev = None
-        if opts.get('rev'):
-            endrev = max(scmutil.revrange(repo, opts.get('rev'))) + 1
-        getrenamed = templatekw.getrenamedfn(repo, endrev=endrev)
-    displayer = show_changeset(ui, repo, opts, buffered=True)
-    showparents = [ctx.node() for ctx in repo[None].parents()]
-    cmdutil.displaygraph(ui, revdag, displayer, showparents,
-                         graphmod.asciiedges, getrenamed, filematcher)
+    return cmdutil.graphlog(ui, repo, *pats, **opts)
 
 def graphrevs(repo, nodes, opts):
     limit = cmdutil.loglimit(opts)
@@ -129,7 +112,6 @@
 
 def uisetup(ui):
     '''Initialize the extension.'''
-    _wrapcmd('log', commands.table, graphlog)
     _wrapcmd('incoming', commands.table, gincoming)
     _wrapcmd('outgoing', commands.table, goutgoing)
 
diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py
--- a/mercurial/cmdutil.py
+++ b/mercurial/cmdutil.py
@@ -1430,6 +1430,26 @@
             graphmod.ascii(ui, state, type, char, lines, coldata)
     displayer.close()
 
+def graphlog(ui, repo, *pats, **opts):
+    # Parameters are identical to log command ones
+    revs, expr, filematcher = getgraphlogrevs(repo, pats, opts)
+    revs = sorted(revs, reverse=1)
+    limit = loglimit(opts)
+    if limit is not None:
+        revs = revs[:limit]
+    revdag = graphmod.dagwalker(repo, revs)
+
+    getrenamed = None
+    if opts.get('copies'):
+        endrev = None
+        if opts.get('rev'):
+            endrev = max(scmutil.revrange(repo, opts.get('rev'))) + 1
+        getrenamed = templatekw.getrenamedfn(repo, endrev=endrev)
+    displayer = show_changeset(ui, repo, opts, buffered=True)
+    showparents = [ctx.node() for ctx in repo[None].parents()]
+    displaygraph(ui, revdag, displayer, showparents,
+                 graphmod.asciiedges, getrenamed, filematcher)
+
 def add(ui, repo, match, dryrun, listsubrepos, prefix, explicitonly):
     join = lambda f: os.path.join(prefix, f)
     bad = []
diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -3928,6 +3928,7 @@
     ('P', 'prune', [],
      _('do not display revision or any of its ancestors'), _('REV')),
     ('', 'hidden', False, _('show hidden changesets (DEPRECATED)')),
+    ('G', 'graph', None, _("show the revision DAG")),
     ] + logopts + walkopts,
     _('[OPTION]... [FILE]'))
 def log(ui, repo, *pats, **opts):
@@ -4012,6 +4013,8 @@
 
     Returns 0 on success.
     """
+    if opts.get('graph'):
+        return cmdutil.graphlog(ui, repo, *pats, **opts)
 
     matchfn = scmutil.match(repo[None], pats, opts)
     limit = cmdutil.loglimit(opts)
diff --git a/tests/test-debugcomplete.t b/tests/test-debugcomplete.t
--- a/tests/test-debugcomplete.t
+++ b/tests/test-debugcomplete.t
@@ -199,7 +199,7 @@
   export: output, switch-parent, rev, text, git, nodates
   forget: include, exclude
   init: ssh, remotecmd, insecure
-  log: follow, follow-first, date, copies, keyword, rev, removed, only-merges, user, only-branch, branch, prune, hidden, patch, git, limit, no-merges, stat, style, template, include, exclude
+  log: follow, follow-first, date, copies, keyword, rev, removed, only-merges, user, only-branch, branch, prune, hidden, graph, patch, git, limit, no-merges, stat, style, template, include, exclude
   merge: force, rev, preview, tool
   phase: public, draft, secret, force, rev
   pull: update, force, rev, bookmark, branch, ssh, remotecmd, insecure
diff --git a/tests/test-log.t b/tests/test-log.t
--- a/tests/test-log.t
+++ b/tests/test-log.t
@@ -941,7 +941,7 @@
   $ hg resolve -m foo
   $ hg ci -m "Last merge, related"
 
-  $ hg --config "extensions.graphlog=" glog
+  $ hg log --graph
   @    changeset:   10:4dae8563d2c5
   |\   tag:         tip
   | |  parent:      9:7b35701b003e


More information about the Mercurial-devel mailing list