diff mercurial/repository.py @ 40387:f1a39128da95

filelog: add a hasnode() method (API) Missing in the file storage interface is the ability to query whether a specified value is a known node. This commit defines that interface member and implements it on the revlog and sqlite file stores. Storage unit tests have been added. The revlog implementation is a bit more complicated because index lookups don't consistently raise the same exception. For SQLite, we can simply look for a key in a dict. Differential Revision: https://phab.mercurial-scm.org/D5163
author Gregory Szorc <gregory.szorc@gmail.com>
date Wed, 03 Oct 2018 14:57:29 -0700
parents 4821affc154f
children 1b183edbb68e
line wrap: on
line diff
--- a/mercurial/repository.py	Sun Oct 21 22:26:00 2018 -0400
+++ b/mercurial/repository.py	Wed Oct 03 14:57:29 2018 -0700
@@ -484,6 +484,16 @@
     def __iter__():
         """Iterate over revision numbers for this file."""
 
+    def hasnode(node):
+        """Returns a bool indicating if a node is known to this store.
+
+        Implementations must only return True for full, binary node values:
+        hex nodes, revision numbers, and partial node matches must be
+        rejected.
+
+        The null node is never present.
+        """
+
     def revs(start=0, stop=None):
         """Iterate over revision numbers for this file, with control."""