浏览代码

Add ObjectStoreIterator.__bool__

Jelmer Vernooij 7 年之前
父节点
当前提交
a5334525cc
共有 2 个文件被更改,包括 16 次插入3 次删除
  1. 3 3
      dulwich/client.py
  2. 13 0
      dulwich/object_store.py

+ 3 - 3
dulwich/client.py

@@ -309,7 +309,7 @@ class GitClient(object):
         raise NotImplementedError(cls.from_parsedurl)
 
     def send_pack(self, path, update_refs, generate_pack_contents,
-                  progress=None, write_pack=write_pack_objects):
+                  progress=None, write_pack=None):
         """Upload a pack to a remote repository.
 
         :param path: Repository path (as bytestring)
@@ -700,7 +700,7 @@ class TraditionalGitClient(GitClient):
                 return new_refs
             objects = generate_pack_contents(have, want)
 
-            dowrite = len(objects) > 0
+            dowrite = bool(objects)
             dowrite = dowrite or any(old_refs.get(ref) != sha
                                      for (ref, sha) in new_refs.items()
                                      if sha != ZERO_SHA)
@@ -1376,7 +1376,7 @@ class HttpGitClient(GitClient):
         if not want and set(new_refs.items()).issubset(set(old_refs.items())):
             return new_refs
         objects = generate_pack_contents(have, want)
-        if len(objects) > 0:
+        if bool(objects):
             write_pack(req_proto.write_file(), objects)
         resp, read = self._smart_request("git-receive-pack", url,
                                          data=req_data.getvalue())

+ 13 - 0
dulwich/object_store.py

@@ -959,6 +959,19 @@ class ObjectStoreIterator(ObjectIterator):
         """Return the number of objects."""
         return len(list(self.itershas()))
 
+    def empty(self):
+        iter = self.itershas()
+        try:
+            iter()
+        except StopIteration:
+            return True
+        else:
+            return False
+
+    def __bool__(self):
+        """Indicate whether this object has contents."""
+        return not self.empty()
+
 
 def tree_lookup_path(lookup_obj, root_sha, path):
     """Look up an object in a Git tree.