From e4e79a217576d24ef4d73b620766f62b155bcd98 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 21 Dec 2005 13:17:54 -0800 Subject: GIT 1.0.0a - Avoid misleading success message on error (Johannes) - objects/info/packs: work around bug in http-fetch.c::fetch_indices() - http-fetch.c: fix objects/info/pack parsing. - An off-by-one bug found by valgrind (Pavel) Signed-off-by: Junio C Hamano --- Makefile | 2 +- debian/changelog | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index e9bf860f6d..7de4bbedbd 100644 --- a/Makefile +++ b/Makefile @@ -55,7 +55,7 @@ all: # Define USE_STDEV below if you want git to care about the underlying device # change being considered an inode change from the update-cache perspective. -GIT_VERSION = 1.0.0 +GIT_VERSION = 1.0.0a # CFLAGS and LDFLAGS are for the users to override from the command line. diff --git a/debian/changelog b/debian/changelog index 4fa6c16e8e..adebba50bb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,14 @@ +git-core (1.0.0a-0) unstable; urgency=low + + * GIT 1.0.0a to include the following fixes: + + - Avoid misleading success message on error (Johannes) + - objects/info/packs: work around bug in http-fetch.c::fetch_indices() + - http-fetch.c: fix objects/info/pack parsing. + - An off-by-one bug found by valgrind (Pavel) + + -- Junio C Hamano Wed, 21 Dec 2005 13:17:17 -0800 + git-core (1.0.0-0) unstable; urgency=low * GIT 1.0.0 -- cgit v1.2.1 From 69310a34cb6dcca32b08cf3ea9e91ab19354a874 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 22 Dec 2005 12:39:39 -0800 Subject: send-pack: reword non-fast-forward error message. Wnen refusing to push a head, we said cryptic "remote 'branch' object X does not exist on local" or "remote ref 'branch' is not a strict subset of local ref 'branch'". That was gittish. Since the most likely reason this happens is because the pushed head was not up-to-date, clarify the error message to say that straight, and suggest pulling first. First noticed by Johannes and seconded by Andreas. Signed-off-by: Junio C Hamano --- send-pack.c | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/send-pack.c b/send-pack.c index 5bc2f017bc..0d41f9a178 100644 --- a/send-pack.c +++ b/send-pack.c @@ -231,23 +231,21 @@ static int send_pack(int in, int out, int nr_refspec, char **refspec) if (!force_update && !is_zero_sha1(ref->old_sha1) && !ref->force) { - if (!has_sha1_file(ref->old_sha1)) { - error("remote '%s' object %s does not " - "exist on local", - ref->name, sha1_to_hex(ref->old_sha1)); - ret = -2; - continue; - } - - /* We assume that local is fsck-clean. Otherwise - * you _could_ have an old tag which points at - * something you do not have, which may or may not - * be a commit. - */ - if (!ref_newer(ref->peer_ref->new_sha1, + if (!has_sha1_file(ref->old_sha1) || + !ref_newer(ref->peer_ref->new_sha1, ref->old_sha1)) { - error("remote ref '%s' is not a strict " - "subset of local ref '%s'.", ref->name, + /* We do not have the remote ref, or + * we know that the remote ref is not + * an ancestor of what we are trying to + * push. Either way this can be losing + * commits at the remote end and likely + * we were not up to date to begin with. + */ + error("remote '%s' is not a strict " + "subset of local ref '%s'. " + "maybe you are not up-to-date and " + "need to pull first?", + ref->name, ref->peer_ref->name); ret = -2; continue; -- cgit v1.2.1 From e99fcf96deab45ca81b22948328deb2d8586aa8d Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Thu, 22 Dec 2005 20:38:23 +0100 Subject: git-format-patch should show the correct version We want to record the version of the tools the patch was generated with. While these tools could be rebuilt, git-format-patch stayed the same and report the wrong version. Signed-off-by: Johannes Schindelin Signed-off-by: Junio C Hamano --- Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Makefile b/Makefile index e9bf860f6d..dde8f331d6 100644 --- a/Makefile +++ b/Makefile @@ -397,6 +397,9 @@ $(patsubst %.py,%,$(SCRIPT_PYTHON)) : % : %.py git-cherry-pick: git-revert cp $< $@ +# format-patch records GIT_VERSION +git-format-patch: Makefile + %.o: %.c $(CC) -o $*.o -c $(ALL_CFLAGS) $< %.o: %.S -- cgit v1.2.1 From a14c225661fa2fc271d9e0fbf262e369dc7254fc Mon Sep 17 00:00:00 2001 From: Nick Hengeveld Date: Thu, 22 Dec 2005 09:09:05 -0800 Subject: Fix for http-fetch from file:// URLs Recognize missing files when using http-fetch with file:// URLs Signed-off-by: Nick Hengeveld Signed-off-by: Junio C Hamano --- http-fetch.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/http-fetch.c b/http-fetch.c index 3cd6ef91af..61b2188adb 100644 --- a/http-fetch.c +++ b/http-fetch.c @@ -267,7 +267,8 @@ static void process_object_response(void *callback_data) obj_req->state = COMPLETE; /* Use alternates if necessary */ - if (obj_req->http_code == 404) { + if (obj_req->http_code == 404 || + obj_req->curl_result == CURLE_FILE_COULDNT_READ_FILE) { fetch_alternates(alt->base); if (obj_req->repo->next != NULL) { obj_req->repo = @@ -475,7 +476,8 @@ static void process_alternates_response(void *callback_data) } } } else if (slot->curl_result != CURLE_OK) { - if (slot->http_code != 404) { + if (slot->http_code != 404 && + slot->curl_result != CURLE_FILE_COULDNT_READ_FILE) { got_alternates = -1; return; } @@ -637,7 +639,8 @@ static int fetch_indices(struct alt_base *repo) if (start_active_slot(slot)) { run_active_slot(slot); if (slot->curl_result != CURLE_OK) { - if (slot->http_code == 404) { + if (slot->http_code == 404 || + slot->curl_result == CURLE_FILE_COULDNT_READ_FILE) { repo->got_indices = 1; free(buffer.buffer); return 0; @@ -802,7 +805,8 @@ static int fetch_object(struct alt_base *repo, unsigned char *sha1) ret = error("Request for %s aborted", hex); } else if (obj_req->curl_result != CURLE_OK && obj_req->http_code != 416) { - if (obj_req->http_code == 404) + if (obj_req->http_code == 404 || + obj_req->curl_result == CURLE_FILE_COULDNT_READ_FILE) ret = -1; /* Be silent, it is probably in a pack. */ else ret = error("%s (curl_result = %d, http_code = %ld, sha1 = %s)", -- cgit v1.2.1 From 1e80e0449248edb77b0fb9853f4a3404a599e207 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Thu, 22 Dec 2005 18:55:59 +0100 Subject: sha1_to_hex: properly terminate the SHA1 sha1_to_hex() returns a pointer to a static buffer. Some of its users modify that buffer by appending a newline character. Other users rely on the fact that you can call printf("%s", sha1_to_hex(sha1)); Just to be on the safe side, terminate the SHA1 in sha1_to_hex(). Signed-off-by: Johannes Schindelin Signed-off-by: Junio C Hamano --- sha1_file.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sha1_file.c b/sha1_file.c index 601147351d..d451a94efe 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -81,6 +81,8 @@ char * sha1_to_hex(const unsigned char *sha1) *buf++ = hex[val >> 4]; *buf++ = hex[val & 0xf]; } + *buf = '\0'; + return buffer; } -- cgit v1.2.1