send_pack: simplify filtering of unsupported ref deletions
authorMike Edgar <adgar@google.com>
Thu, 18 Sep 2014 15:02:56 +0000 (11:02 -0400)
committerJelmer Vernooij <jelmer@samba.org>
Fri, 19 Sep 2014 00:41:12 +0000 (02:41 +0200)
The previous implementation used filter() over a nontrivial nested
function with side-effects. A simple loop is a bit more readable.

Signed-off-by: Jelmer Vernooij <jelmer@samba.org>
dulwich/client.py

index 757f392912b848a54e338f7f32da1ab2f2b36904..1277e3a0a8fbe5fa7b36bd8d102f70dc10a30949 100644 (file)
@@ -455,21 +455,15 @@ class TraditionalGitClient(GitClient):
 
             if not 'delete-refs' in server_capabilities:
                 # Server does not support deletions. Fail later.
-                def remove_del(pair):
-                    if pair[1] == ZERO_SHA:
+                new_refs = dict(orig_new_refs)
+                for ref, sha in orig_new_refs.iteritems():
+                    if sha == ZERO_SHA:
                         if 'report-status' in negotiated_capabilities:
                             report_status_parser._ref_statuses.append(
                                 'ng %s remote does not support deleting refs'
-                                % pair[1])
+                                % sha)
                             report_status_parser._ref_status_ok = False
-                        return False
-                    else:
-                        return True
-
-                new_refs = dict(
-                    filter(
-                        remove_del,
-                        [(ref, sha) for ref, sha in new_refs.iteritems()]))
+                        del new_refs[ref]
 
             if new_refs is None:
                 proto.write_pkt_line(None)