commit d440d64f2e95346d38a0a068769456e891a0c82d from: Stefan Sperling date: Wed Oct 30 15:40:36 2024 UTC fix detection of HEAD symref with protocol v2 over HTTP and add a test case related to issue #1389 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()