X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=upload-pack.c;h=3648aae1a777aec4bba77b40b9cf6da484190441;hb=fd2a75972e90d34bc8d4bebe1d669645557a2192;hp=7e3c437d8e1eaca61ccabb29f3097ba9c5c3732e;hpb=c6702f4b95699c6bd47337516c32e3408dda0595;p=git.git diff --git a/upload-pack.c b/upload-pack.c index 7e3c437d8..3648aae1a 100644 --- a/upload-pack.c +++ b/upload-pack.c @@ -1,6 +1,3 @@ -#include -#include -#include #include "cache.h" #include "refs.h" #include "pkt-line.h" @@ -58,6 +55,7 @@ static ssize_t send_client_data(int fd, const char *data, ssize_t sz) /* emergency quit */ fd = 2; if (fd == 2) { + /* XXX: are we happy to lose stuff here? */ xwrite(fd, data, sz); return sz; } @@ -245,7 +243,7 @@ static void create_pack_file(void) *cp++ = buffered; outsz++; } - sz = read(pu_pipe[0], cp, + sz = xread(pu_pipe[0], cp, sizeof(data) - outsz); if (0 < sz) ; @@ -270,7 +268,7 @@ static void create_pack_file(void) /* Status ready; we ship that in the side-band * or dump to the standard error. */ - sz = read(pe_pipe[0], progress, + sz = xread(pe_pipe[0], progress, sizeof(progress)); if (0 < sz) send_client_data(2, progress, sz); @@ -565,7 +563,7 @@ static void receive_needs(void) SHALLOW, NOT_SHALLOW); while (result) { struct object *object = &result->item->object; - if (!(object->flags & CLIENT_SHALLOW)) { + if (!(object->flags & (CLIENT_SHALLOW|NOT_SHALLOW))) { packet_write(1, "shallow %s", sha1_to_hex(object->sha1)); register_shallow(object->sha1); @@ -582,6 +580,7 @@ static void receive_needs(void) object->flags &= ~CLIENT_SHALLOW; /* make sure the real parents are parsed */ unregister_shallow(object->sha1); + object->parsed = 0; parse_commit((struct commit *)object); parents = ((struct commit *)object)->parents; while (parents) { @@ -673,7 +672,8 @@ int main(int argc, char **argv) if (!enter_repo(dir, strict)) die("'%s': unable to chdir or not a git archive", dir); - + if (is_repository_shallow()) + die("attempt to fetch/clone from a shallow repository"); upload_pack(); return 0; }