D2970: context: set repo property in basectx

martinvonz (Martin von Zweigbergk) phabricator at mercurial-scm.org
Fri Mar 30 06:10:26 UTC 2018


martinvonz created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  It seems like a good practice to call the super constructor. Let's
  start by passing the repo along to basectx so it can assign it to a
  private attribute. We should perhaps pass the rev and node along as
  well, but that requires more work before it can be done.

REPOSITORY
  rHG Mercurial

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

AFFECTED FILES
  mercurial/context.py

CHANGE DETAILS

diff --git a/mercurial/context.py b/mercurial/context.py
--- a/mercurial/context.py
+++ b/mercurial/context.py
@@ -63,6 +63,9 @@
     memctx: a context that represents changes in-memory and can also
             be committed."""
 
+    def __init__(self, repo):
+        self._repo = repo
+
     def __bytes__(self):
         return short(self.node())
 
@@ -406,10 +409,10 @@
     the repo."""
     def __init__(self, repo, changeid='.'):
         """changeid is a revision number, node, or tag"""
+        super(changectx, self).__init__(repo)
 
         if changeid == '':
             changeid = '.'
-        self._repo = repo
 
         try:
             if isinstance(changeid, int):
@@ -1134,7 +1137,7 @@
     wants the ability to commit, e.g. workingctx or memctx."""
     def __init__(self, repo, text="", user=None, date=None, extra=None,
                  changes=None):
-        self._repo = repo
+        super(committablectx, self).__init__(repo)
         self._rev = None
         self._node = None
         self._text = text
@@ -1818,7 +1821,6 @@
 
     def __init__(self, repo):
         super(overlayworkingctx, self).__init__(repo)
-        self._repo = repo
         self.clean()
 
     def setbase(self, wrappedctx):



To: martinvonz, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list