Code

http-push: push <remote> :<branch> deletes remote branch
[git.git] / builtin-http-fetch.c
index 4a50dbd95ba65b471a0e26f0b46bb8b60fda1ecb..7f450c61d95945862fc44bec99859a229269b224 100644 (file)
@@ -9,6 +9,7 @@ int cmd_http_fetch(int argc, const char **argv, const char *prefix)
        const char **write_ref = NULL;
        char **commit_id;
        const char *url;
+       char *rewritten_url = NULL;
        int arg = 1;
        int rc = 0;
        int get_tree = 0;
@@ -51,6 +52,12 @@ int cmd_http_fetch(int argc, const char **argv, const char *prefix)
                commits = 1;
        }
        url = argv[arg];
+       if (url && url[strlen(url)-1] != '/') {
+               rewritten_url = malloc(strlen(url)+2);
+               strcpy(rewritten_url, url);
+               strcat(rewritten_url, "/");
+               url = rewritten_url;
+       }
 
        walker = get_http_walker(url);
        walker->get_tree = get_tree;
@@ -73,5 +80,8 @@ int cmd_http_fetch(int argc, const char **argv, const char *prefix)
 
        walker_free(walker);
 
+       if (rewritten_url)
+               free(rewritten_url);
+
        return rc;
 }