commitextras: move fb extension to core which add extras to a commit
This patch moves the Facebook extension to add extra fields to a commit to a
in-core extension.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hgext/commitextras.py Wed Jul 12 00:23:45 2017 +0530
@@ -0,0 +1,45 @@
+# commitextras.py
+#
+# Copyright 2013 Facebook, Inc.
+#
+# This software may be used and distributed according to the terms of the
+# GNU General Public License version 2 or any later version.
+
+'''adds a new flag extras to commit'''
+
+from __future__ import absolute_import
+
+from mercurial.i18n import _
+from mercurial import (
+ commands,
+ extensions,
+ registrar,
+)
+
+cmdtable = {}
+command = registrar.command(cmdtable)
+testedwith = 'ships-with-hg-core'
+
+def extsetup(ui):
+ entry = extensions.wrapcommand(commands.table, 'commit', _commit)
+ options = entry[1]
+ options.append(('', 'extra', [],
+ _('set a changeset\'s extra values'), _("KEY=VALUE")))
+
+def _commit(orig, ui, repo, *pats, **opts):
+ origcommit = repo.commit
+ try:
+ def _wrappedcommit(*innerpats, **inneropts):
+ extras = opts.get('extra')
+ if extras:
+ for raw in extras:
+ k, v = raw.split('=', 1)
+ inneropts['extra'][k] = v
+ return origcommit(*innerpats, **inneropts)
+
+ # This __dict__ logic is needed because the normal
+ # extension.wrapfunction doesn't seem to work.
+ repo.__dict__['commit'] = _wrappedcommit
+ return orig(ui, repo, *pats, **opts)
+ finally:
+ del repo.__dict__['commit']
--- a/tests/test-help.t Mon Jul 17 00:49:29 2017 -0400
+++ b/tests/test-help.t Wed Jul 12 00:23:45 2017 +0530
@@ -254,6 +254,7 @@
censor erase file content at a given revision
churn command to display statistics about repository history
clonebundles advertise pre-generated bundles to seed clones
+ commitextras adds a new flag extras to commit
convert import revisions from foreign VCS repositories into
Mercurial
eol automatically manage newlines in repository files