[PATCH 1 of 2 remotenames-ext v2] lazyremotenamedict: make iteritems able to not check whether nodes exist

Kostia Balytskyi ikostia at fb.com
Mon Feb 6 10:48:20 UTC 2017


# HG changeset patch
# User Kostia Balytskyi <ikostia at fb.com>
# Date 1486377802 28800
#      Mon Feb 06 02:43:22 2017 -0800
# Node ID f7a3dffec18438cffeef930c8e2ed4f2da0bd4bb
# Parent  090d16362edd806ec4843c1f0b49d331bec6e524
lazyremotenamedict: make iteritems able to not check whether nodes exist

Similar to `keys()` method, we don't always want to resolve every node
in the changelog, sometimes all we're interested in is the node hash.

diff --git a/remotenames.py b/remotenames.py
--- a/remotenames.py
+++ b/remotenames.py
@@ -367,6 +367,20 @@ class lazyremotenamedict(UserDict.DictMi
             return self.cache.keys()
         return self.potentialentries.keys()
 
+    def iteritems(self, resolvekeys=None):
+        """Iterate over (name, node) tuples
+
+        `resolvekeys` has the same meaning as in `keys()` method"""
+        if not self.loaded:
+            self._load()
+        if resolvekeys is None:
+            resolvekeys = self._repo.ui.configbool("remotenames",
+                                                   "resolvekeys", True)
+        for k, vtup in self.potentialentries.iteritems():
+            if resolvekeys:
+                self._fetchandcache(k)
+            yield (k, [bin(vtup[0])])
+
 class remotenames(dict):
     """This class encapsulates all the remotenames state. It also contains
     methods to access that state in convenient ways. Remotenames are lazy


More information about the Mercurial-devel mailing list