瀏覽代碼

Fix handling of slashes in the http client.

Jelmer Vernooij 13 年之前
父節點
當前提交
a9763559f7
共有 1 個文件被更改,包括 7 次插入3 次删除
  1. 7 3
      dulwich/client.py

+ 7 - 3
dulwich/client.py

@@ -578,6 +578,9 @@ class HttpGitClient(GitClient):
         self.dumb = dumb
         GitClient.__init__(self, *args, **kwargs)
 
+    def _get_url(self, path):
+        return urlparse.urljoin(self.base_url, path).rstrip("/") + "/"
+
     def _perform(self, req):
         """Perform a HTTP request.
 
@@ -642,8 +645,9 @@ class HttpGitClient(GitClient):
         :raises UpdateRefsError: if the server supports report-status
                                  and rejects ref updates
         """
-        url = urlparse.urljoin(self.base_url, path)
-        old_refs, server_capabilities = self._discover_references("git-receive-pack", url)
+        url = self._get_url(path)
+        old_refs, server_capabilities = self._discover_references(
+            "git-receive-pack", url)
         negotiated_capabilities = list(self._send_capabilities)
         new_refs = determine_wants(old_refs)
         if not new_refs:
@@ -674,7 +678,7 @@ class HttpGitClient(GitClient):
         :param pack_data: Callback called for each bit of data in the pack
         :param progress: Callback for progress reports (strings)
         """
-        url = urlparse.urljoin(self.base_url, path)
+        url = self._get_url(path)
         refs, server_capabilities = self._discover_references(
             "git-upload-pack", url)
         negotiated_capabilities = list(server_capabilities)