D10445: urlutil: add a `copy` method to `path
marmoute (Pierre-Yves David)
phabricator at mercurial-scm.org
Fri Apr 16 00:03:32 UTC 2021
marmoute created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.
REVISION SUMMARY
This will be useful when inheriting from multiple path at the same time.
REPOSITORY
rHG Mercurial
BRANCH
default
REVISION DETAIL
https://phab.mercurial-scm.org/D10445
AFFECTED FILES
mercurial/utils/urlutil.py
CHANGE DETAILS
diff --git a/mercurial/utils/urlutil.py b/mercurial/utils/urlutil.py
--- a/mercurial/utils/urlutil.py
+++ b/mercurial/utils/urlutil.py
@@ -707,7 +707,7 @@
class path(object):
"""Represents an individual path and its configuration."""
- def __init__(self, ui, name, rawloc=None, suboptions=None):
+ def __init__(self, ui=None, name=None, rawloc=None, suboptions=None):
"""Construct a path from its config options.
``ui`` is the ``ui`` instance the path is coming from.
@@ -719,6 +719,13 @@
filesystem path with a .hg directory or b) a URL. If not,
``ValueError`` is raised.
"""
+ if ui is None:
+ # used in copy
+ assert name is None
+ assert rawloc is None
+ assert suboptions is None
+ return
+
if not rawloc:
raise ValueError(b'rawloc must be defined')
@@ -774,6 +781,16 @@
suboptions.update(self._own_sub_opts)
self._apply_suboptions(ui, suboptions)
+ def copy(self):
+ """make a copy of this path object"""
+ new = self.__class__()
+ for k, v in self.__dict__.items():
+ new_copy = getattr(v, 'copy', None)
+ if new_copy is not None:
+ v = new_copy()
+ new.__dict__[k] = v
+ return new
+
def _validate_path(self):
# When given a raw location but not a symbolic name, validate the
# location is valid.
To: marmoute, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
More information about the Mercurial-devel
mailing list