Pārlūkot izejas kodu

send_pack: simplify condition guarding whether a pack is sent

Signed-off-by: Jelmer Vernooij <jelmer@samba.org>
Mike Edgar 10 gadi atpakaļ
vecāks
revīzija
d007623b73
1 mainītis faili ar 6 papildinājumiem un 9 dzēšanām
  1. 6 9
      dulwich/client.py

+ 6 - 9
dulwich/client.py

@@ -481,16 +481,13 @@ class TraditionalGitClient(GitClient):
             if not want and old_refs == new_refs:
                 return new_refs
             objects = generate_pack_contents(have, want)
-            if len(objects) > 0:
+
+            dowrite = len(objects) > 0
+            dowrite = dowrite or any(old_refs.get(ref) != sha
+                                     for (ref, sha) in new_refs.iteritems()
+                                     if sha != ZERO_SHA)
+            if dowrite:
                 entries, sha = write_pack_objects(proto.write_file(), objects)
-            elif len(set(new_refs.values()) - set([ZERO_SHA])) > 0:
-                # Check for valid create/update refs
-                filtered_new_refs = \
-                    dict([(ref, sha) for ref, sha in new_refs.iteritems()
-                         if sha != ZERO_SHA])
-                if len(set(filtered_new_refs.iteritems()) -
-                        set(old_refs.iteritems())) > 0:
-                    entries, sha = write_pack_objects(proto.write_file(), objects)
 
             self._handle_receive_pack_tail(
                 proto, negotiated_capabilities, progress)