Patchwork D2969: context: move reuse of context object to repo.__getitem__ (API)

login
register
mail settings
Submitter phabricator
Date March 30, 2018, 5:29 p.m.
Message ID <de596de13243c95cdc602417ca3ced65@localhost.localdomain>
Download mbox | patch
Permalink /patch/29972/
State Not Applicable
Headers show

Comments

phabricator - March 30, 2018, 5:29 p.m.
This revision was automatically updated to reflect the committed changes.
Closed by commit rHGbb47dc2f71a0: context: move reuse of context object to repo.__getitem__ (API) (authored by martinvonz, committed by ).

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D2969?vs=7371&id=7392

REVISION DETAIL
  https://phab.mercurial-scm.org/D2969

AFFECTED FILES
  mercurial/context.py
  mercurial/localrepo.py

CHANGE DETAILS




To: martinvonz, #hg-reviewers, indygreg
Cc: indygreg, yuja, smf, mercurial-devel

Patch

diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -782,6 +782,8 @@ 
     def __getitem__(self, changeid):
         if changeid is None:
             return context.workingctx(self)
+        if isinstance(changeid, context.basectx):
+            return changeid
         if isinstance(changeid, slice):
             # wdirrev isn't contiguous so the slice shouldn't include it
             return [context.changectx(self, i)
diff --git a/mercurial/context.py b/mercurial/context.py
--- a/mercurial/context.py
+++ b/mercurial/context.py
@@ -62,11 +62,6 @@ 
                 be committed,
     memctx: a context that represents changes in-memory and can also
             be committed."""
-    def __new__(cls, repo, changeid='', *args, **kwargs):
-        if isinstance(changeid, basectx):
-            return changeid
-
-        return super(basectx, cls).__new__(cls)
 
     def __bytes__(self):
         return short(self.node())
@@ -412,11 +407,6 @@ 
     def __init__(self, repo, changeid='.'):
         """changeid is a revision number, node, or tag"""
 
-        # since basectx.__new__ already took care of copying the object, we
-        # don't need to do anything in __init__, so we just exit here
-        if isinstance(changeid, basectx):
-            return
-
         if changeid == '':
             changeid = '.'
         self._repo = repo
@@ -2486,9 +2476,6 @@ 
     dateutil.parsedate() and defaults to current date, extra is a dictionary of
     metadata or is left empty.
     """
-    def __new__(cls, repo, originalctx, *args, **kwargs):
-        return super(metadataonlyctx, cls).__new__(cls, repo)
-
     def __init__(self, repo, originalctx, parents=None, text=None, user=None,
                  date=None, extra=None, editor=False):
         if text is None: