Patchwork [1,of,2] cmdutil: factor out pushdest functionality for easier extensibility

login
register
mail settings
Submitter Ryan McElroy
Date Feb. 12, 2015, 8:41 a.m.
Message ID <05e7d10145be0af89e1e.1423730464@devbig105.prn2.facebook.com>
Download mbox | patch
Permalink /patch/7796/
State Changes Requested
Headers show

Comments

Ryan McElroy - Feb. 12, 2015, 8:41 a.m.
# HG changeset patch
# User Ryan McElroy <rmcelroy@fb.com>
# Date 1423729187 28800
#      Thu Feb 12 00:19:47 2015 -0800
# Node ID 05e7d10145be0af89e1eb6cf70c56e97f81101ab
# Parent  ff5caa8dfd993680d9602ca6ebb14da9de10d5f4
cmdutil: factor out pushdest functionality for easier extensibility

In the remotenames extension, we replace large parts of the functionality of
the push command. By factoring out this code, we can call it from the extension
and no longer have a copy of it in the extension.

Patch

diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py
--- a/mercurial/cmdutil.py
+++ b/mercurial/cmdutil.py
@@ -15,6 +15,7 @@  import changelog
 import bookmarks
 import encoding
 import lock as lockmod
+import hg
 
 def parsealiases(cmd):
     return cmd.lstrip("^").split("|")
@@ -2960,3 +2961,19 @@  def clearunfinished(repo):
     for f, clearable, allowcommit, msg, hint in unfinishedstates:
         if clearable and repo.vfs.exists(f):
             util.unlink(repo.join(f))
+
+def pushdest(ui, repo, dest, opts):
+    dest = ui.expandpath(dest or 'default-push', dest or 'default')
+    dest, branches = hg.parseurl(dest, opts.get('branch'))
+    ui.status(_('pushing to %s\n') % util.hidepassword(dest))
+    revs, checkout = hg.addbranchrevs(repo, repo, branches, opts.get('rev'))
+    try:
+        other = hg.peer(repo, opts, dest)
+    except error.RepoError:
+        if dest == "default-push":
+            raise util.Abort(_("default repository not configured!"),
+                    hint=_('see the "path" section in "hg help config"'))
+        else:
+            raise
+
+    return (dest, branches, revs, other)
diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -5083,18 +5083,7 @@  def push(ui, repo, dest=None, **opts):
                 # this lets simultaneous -r, -b options continue working
                 opts.setdefault('rev', []).append("null")
 
-    dest = ui.expandpath(dest or 'default-push', dest or 'default')
-    dest, branches = hg.parseurl(dest, opts.get('branch'))
-    ui.status(_('pushing to %s\n') % util.hidepassword(dest))
-    revs, checkout = hg.addbranchrevs(repo, repo, branches, opts.get('rev'))
-    try:
-        other = hg.peer(repo, opts, dest)
-    except error.RepoError:
-        if dest == "default-push":
-            raise util.Abort(_("default repository not configured!"),
-                    hint=_('see the "path" section in "hg help config"'))
-        else:
-            raise
+    dest, branches, revs, other = cmdutil.pushdest(ui, repo, dest, opts)
 
     if revs:
         revs = [repo.lookup(r) for r in scmutil.revrange(repo, revs)]