branchcache: introduce hasbranch()
authorPulkit Goyal <pulkit@yandex-team.ru>
Mon, 18 Mar 2019 19:31:45 +0300
changeset 42004 0bd730fbcc2b
parent 42003 7546bf46bfcd
child 42005 b137a6793c51
branchcache: introduce hasbranch() This will be used to check whether a branch exists or not. This will optimized in future. Differential Revision: https://phab.mercurial-scm.org/D6154
mercurial/branchmap.py
mercurial/localrepo.py
mercurial/revset.py
--- a/mercurial/branchmap.py	Mon Mar 18 19:11:55 2019 +0300
+++ b/mercurial/branchmap.py	Mon Mar 18 19:31:45 2019 +0300
@@ -175,6 +175,10 @@
     def iteritems(self):
         return self.entries.iteritems()
 
+    def hasbranch(self, label):
+        """ checks whether a branch of this name exists or not """
+        return label in self.entries
+
     @classmethod
     def fromfile(cls, repo):
         f = None
--- a/mercurial/localrepo.py	Mon Mar 18 19:11:55 2019 +0300
+++ b/mercurial/localrepo.py	Mon Mar 18 19:31:45 2019 +0300
@@ -1556,7 +1556,7 @@
         return scmutil.revsymbol(self, key).node()
 
     def lookupbranch(self, key):
-        if key in self.branchmap().entries:
+        if self.branchmap().hasbranch(key):
             return key
 
         return scmutil.revsymbol(self, key).branch()
@@ -2730,7 +2730,7 @@
         if branch is None:
             branch = self[None].branch()
         branches = self.branchmap()
-        if branch not in branches.entries:
+        if not branches.hasbranch(branch):
             return []
         # the cache returns heads ordered lowest to highest
         bheads = list(reversed(branches.branchheads(branch, closed=closed)))
--- a/mercurial/revset.py	Mon Mar 18 19:11:55 2019 +0300
+++ b/mercurial/revset.py	Mon Mar 18 19:31:45 2019 +0300
@@ -555,7 +555,7 @@
         if kind == 'literal':
             # note: falls through to the revspec case if no branch with
             # this name exists and pattern kind is not specified explicitly
-            if pattern in repo.branchmap():
+            if repo.branchmap().hasbranch(pattern):
                 return subset.filter(lambda r: matcher(getbranch(r)),
                                      condrepr=('<branch %r>', b))
             if b.startswith('literal:'):