[PATCH 1 of 6] subrepo: prefetch ctx.repo() for efficiency and centralization

FUJIWARA Katsunori foozy at lares.dti.ne.jp
Thu Jul 9 16:02:58 UTC 2015


# HG changeset patch
# User FUJIWARA Katsunori <foozy at lares.dti.ne.jp>
# Date 1436457591 -32400
#      Fri Jul 10 00:59:51 2015 +0900
# Node ID 86048cf48d5c86497dfde9a2ccce9dfb0794d920
# Parent  648323f41a89619d9eeeb7287213378c340866c8
subrepo: prefetch ctx.repo() for efficiency and centralization

'subrepo.state()' refers same 'ctx.repo()' in many places and times.

diff --git a/mercurial/subrepo.py b/mercurial/subrepo.py
--- a/mercurial/subrepo.py
+++ b/mercurial/subrepo.py
@@ -62,6 +62,7 @@ def state(ctx, ui):
     (key in types dict))
     """
     p = config.config()
+    repo = ctx.repo()
     def read(f, sections=None, remap=None):
         if f in ctx:
             try:
@@ -71,11 +72,10 @@ def state(ctx, ui):
                     raise
                 # handle missing subrepo spec files as removed
                 ui.warn(_("warning: subrepo spec file \'%s\' not found\n") %
-                        util.pathto(ctx.repo().root, ctx.repo().getcwd(), f))
+                        util.pathto(repo.root, repo.getcwd(), f))
                 return
             p.parse(f, data, sections, remap, read)
         else:
-            repo = ctx.repo()
             raise util.Abort(_("subrepo spec file \'%s\' not found") %
                              util.pathto(repo.root, repo.getcwd(), f))
 
@@ -95,7 +95,6 @@ def state(ctx, ui):
                 try:
                     revision, path = l.split(" ", 1)
                 except ValueError:
-                    repo = ctx.repo()
                     raise util.Abort(_("invalid subrepository revision "
                                        "specifier in \'%s\' line %d")
                                      % (util.pathto(repo.root, repo.getcwd(),
@@ -132,7 +131,7 @@ def state(ctx, ui):
             src = src.lstrip() # strip any extra whitespace after ']'
 
         if not util.url(src).isabs():
-            parent = _abssource(ctx.repo(), abort=False)
+            parent = _abssource(repo, abort=False)
             if parent:
                 parent = util.url(parent)
                 parent.path = posixpath.join(parent.path or '', src)


More information about the Mercurial-devel mailing list