changeset 46910:df7439cc6806

urlutil: add a `get_pull_paths` to perform the pull destination logic As is this changeset does not change anything. However having an official empty point will help unifying the logic and encapsulate the details and update the logic to support path definition pointing to multiple other path. Differential Revision: https://phab.mercurial-scm.org/D10378
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Tue, 13 Apr 2021 12:28:44 +0200
parents 067840864f37
children 6071bfab6292
files mercurial/commands.py mercurial/utils/urlutil.py
diffstat 2 files changed, 11 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/commands.py	Mon Apr 12 22:22:56 2021 +0200
+++ b/mercurial/commands.py	Tue Apr 13 12:28:44 2021 +0200
@@ -5387,12 +5387,8 @@
         hint = _(b'use hg pull followed by hg update DEST')
         raise error.InputError(msg, hint=hint)
 
-    if not sources:
-        sources = [b'default']
-    for source in sources:
-        source, branches = urlutil.parseurl(
-            ui.expandpath(source), opts.get(b'branch')
-        )
+    sources = urlutil.get_pull_paths(repo, ui, sources, opts.get(b'branch'))
+    for source, branches in sources:
         ui.status(_(b'pulling from %s\n') % urlutil.hidepassword(source))
         ui.flush()
         other = hg.peer(repo, opts, source)
--- a/mercurial/utils/urlutil.py	Mon Apr 12 22:22:56 2021 +0200
+++ b/mercurial/utils/urlutil.py	Tue Apr 13 12:28:44 2021 +0200
@@ -453,6 +453,15 @@
         yield ui.getpath(dest, default=(b'default-push', b'default'))
 
 
+def get_pull_paths(repo, ui, sources, default_branches=()):
+    """yields all the `(path, branch)` selected as pull source by `sources`"""
+    if not sources:
+        sources = [b'default']
+    for source in sources:
+        url = ui.expandpath(source)
+        yield parseurl(url, default_branches)
+
+
 def parseurl(path, branches=None):
     '''parse url#branch, returning (url, (branch, branches))'''
     u = url(path)