Commit Diff


commit - 8ccaacf7a3bb2401fa09ec42bf513ed344c38e04
commit + d440d64f2e95346d38a0a068769456e891a0c82d
blob - a79d7dd7434b10a9409ff691c9007f3e6df37b8b
blob + df5ab1f2e223cb83b7f61050e87c5b03755494ef
--- dulwich/client.py
+++ dulwich/client.py
@@ -2609,9 +2609,11 @@ class AbstractHttpGitClient(GitClient):
         )
         (
             negotiated_capabilities,
-            symrefs,
+            capa_symrefs,
             agent,
         ) = self._negotiate_upload_pack_capabilities(server_capabilities)
+        if not symrefs and capa_symrefs:
+            symrefs = capa_symrefs
         if depth is not None:
             wants = determine_wants(refs, depth=depth)
         else:
blob - 40cea9035ac05c79588d1d69091e0250bcde1db6
blob + 8b22a3d8f1e586113a2440400fbbb7caee331c5d
--- tests/compat/test_client.py
+++ tests/compat/test_client.py
@@ -226,6 +226,10 @@ class DulwichClientTestBase:
         c = self._client()
         with repo.Repo(os.path.join(self.gitroot, "dest")) as dest:
             result = c.fetch(self._build_path("/server_new.export"), dest)
+            self.assertEqual(
+                {b"HEAD": b"refs/heads/master"},
+                result.symrefs,
+            )
             for r in result.refs.items():
                 dest.refs.set_if_equals(r[0], None, r[1])
             self.assertDestEqualsSrc()