X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=upload-pack.c;h=1834b6ba8c52ea9d8e166d9bc14a4156c289ba20;hb=e921fb82cf6fb4a5f138ec9d27bc37c658336a8c;hp=686445ec9b0a685e8325bb4d62abba90a6b3ad07;hpb=1bd8c8f00b1c7facb67c99047fe777b53f2c49ff;p=git.git diff --git a/upload-pack.c b/upload-pack.c index 686445ec..1834b6ba 100644 --- a/upload-pack.c +++ b/upload-pack.c @@ -212,17 +212,21 @@ static int receive_needs(void) static int send_ref(const char *refname, const unsigned char *sha1) { - static char *capabilities = "\0multi_ack"; + static char *capabilities = "multi_ack"; struct object *o = parse_object(sha1); - packet_write(1, "%s %s%s\n", sha1_to_hex(sha1), refname, capabilities); - capabilities = ""; + if (capabilities) + packet_write(1, "%s %s%c%s\n", sha1_to_hex(sha1), refname, + 0, capabilities); + else + packet_write(1, "%s %s\n", sha1_to_hex(sha1), refname); + capabilities = NULL; if (!(o->flags & OUR_REF)) { o->flags |= OUR_REF; nr_our_refs++; } if (o->type == tag_type) { - o = deref_tag(o); + o = deref_tag(o, refname, 0); packet_write(1, "%s %s^{}\n", sha1_to_hex(o->sha1), refname); } return 0; @@ -244,7 +248,7 @@ static int upload_pack(void) int main(int argc, char **argv) { - const char *dir; + char *dir; int i; int strict = 0; @@ -271,18 +275,9 @@ int main(int argc, char **argv) usage(upload_pack_usage); dir = argv[i]; - /* chdir to the directory. If that fails, try appending ".git" */ - if (chdir(dir) < 0) { - if (strict || chdir(mkpath("%s.git", dir)) < 0) - die("git-upload-pack unable to chdir to %s", dir); - } - if (!strict) - chdir(".git"); - - if (access("objects", X_OK) || access("refs", X_OK)) - die("git-upload-pack: %s doesn't seem to be a git archive", dir); + if (!enter_repo(dir, strict)) + die("'%s': unable to chdir or not a git archive", dir); - putenv("GIT_DIR=."); upload_pack(); return 0; }