GIT 1.0.3 v1.0.3
authorJunio C Hamano <junkio@cox.net>
Fri, 23 Dec 2005 02:14:31 +0000 (18:14 -0800)
committerJunio C Hamano <junkio@cox.net>
Fri, 23 Dec 2005 02:14:31 +0000 (18:14 -0800)
Signed-off-by: Junio C Hamano <junkio@cox.net>
Makefile
config.c
debian/changelog
git.c
http-fetch.c
receive-pack.c
send-pack.c
sha1_file.c
show-branch.c

index 199cc47..890f16b 100644 (file)
--- 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.0b
+GIT_VERSION = 1.0.3
 
 # CFLAGS and LDFLAGS are for the users to override from the command line.
 
@@ -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
index 5b5a9a2..992e988 100644 (file)
--- a/config.c
+++ b/config.c
@@ -487,7 +487,7 @@ int git_config_set_multivar(const char* key, const char* value,
                        store.value_regex = (regex_t*)malloc(sizeof(regex_t));
                        if (regcomp(store.value_regex, value_regex,
                                        REG_EXTENDED)) {
-                               fprintf(stderr, "Invalid pattern: %s",
+                               fprintf(stderr, "Invalid pattern: %s\n",
                                        value_regex);
                                free(store.value_regex);
                                return 6;
index 8dc86c5..53af1d6 100644 (file)
@@ -1,3 +1,9 @@
+git-core (1.0.3-0) unstable; urgency=low
+
+  * GIT 1.0.3 maintenance release.
+
+ -- Junio C Hamano <junkio@cox.net>  Thu, 22 Dec 2005 18:13:33 -0800
+
 git-core (1.0.0b-0) unstable; urgency=low
 
   * GIT 1.0.0b to include two more fixes.
diff --git a/git.c b/git.c
index 0fd95bf..e795ddb 100644 (file)
--- a/git.c
+++ b/git.c
@@ -278,7 +278,7 @@ int main(int argc, char **argv, char **envp)
        if (*exec_path != '/') {
                if (!getcwd(git_command, sizeof(git_command))) {
                        fprintf(stderr,
-                               "git: cannot determine current directory");
+                               "git: cannot determine current directory\n");
                        exit(1);
                }
                len = strlen(git_command);
index 3cd6ef9..61b2188 100644 (file)
@@ -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)",
index cbe37e7..92878ec 100644 (file)
@@ -79,7 +79,7 @@ static int run_update_hook(const char *refname,
        case -ERR_RUN_COMMAND_WAITPID_WRONG_PID:
                die("waitpid is confused");
        case -ERR_RUN_COMMAND_WAITPID_SIGNAL:
-               fprintf(stderr, "%s died of signal", update_hook);
+               fprintf(stderr, "%s died of signal\n", update_hook);
                return -1;
        case -ERR_RUN_COMMAND_WAITPID_NOEXIT:
                die("%s died strangely", update_hook);
index 5bc2f01..0d41f9a 100644 (file)
@@ -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;
index fa22e9c..d451a94 100644 (file)
@@ -81,6 +81,8 @@ char * sha1_to_hex(const unsigned char *sha1)
                *buf++ = hex[val >> 4];
                *buf++ = hex[val & 0xf];
        }
+       *buf = '\0';
+
        return buffer;
 }
 
@@ -464,7 +466,7 @@ struct packed_git *add_packed_git(char *path, int path_len, int local)
        p->pack_last_used = 0;
        p->pack_use_cnt = 0;
        p->pack_local = local;
-       if (!get_sha1_hex(path + path_len - 40 - 4, sha1))
+       if ((path_len > 44) && !get_sha1_hex(path + path_len - 44, sha1))
                memcpy(p->sha1, sha1, 20);
        return p;
 }
@@ -1274,7 +1276,7 @@ int move_temp_to_file(const char *tmpfile, char *filename)
        unlink(tmpfile);
        if (ret) {
                if (ret != EEXIST) {
-                       fprintf(stderr, "unable to write sha1 filename %s: %s", filename, strerror(ret));
+                       fprintf(stderr, "unable to write sha1 filename %s: %s\n", filename, strerror(ret));
                        return -1;
                }
                /* FIXME!!! Collision check here ? */
@@ -1313,7 +1315,7 @@ int write_sha1_file(void *buf, unsigned long len, const char *type, unsigned cha
        }
 
        if (errno != ENOENT) {
-               fprintf(stderr, "sha1 file %s: %s", filename, strerror(errno));
+               fprintf(stderr, "sha1 file %s: %s\n", filename, strerror(errno));
                return -1;
        }
 
@@ -1321,7 +1323,7 @@ int write_sha1_file(void *buf, unsigned long len, const char *type, unsigned cha
 
        fd = mkstemp(tmpfile);
        if (fd < 0) {
-               fprintf(stderr, "unable to create temporary sha1 filename %s: %s", tmpfile, strerror(errno));
+               fprintf(stderr, "unable to create temporary sha1 filename %s: %s\n", tmpfile, strerror(errno));
                return -1;
        }
 
@@ -1410,7 +1412,7 @@ int write_sha1_to_fd(int fd, const unsigned char *sha1)
                size = write(fd, buf + posn, objsize - posn);
                if (size <= 0) {
                        if (!size) {
-                               fprintf(stderr, "write closed");
+                               fprintf(stderr, "write closed\n");
                        } else {
                                perror("write ");
                        }
index c742246..3fe62b7 100644 (file)
@@ -303,7 +303,7 @@ static int append_ref(const char *refname, const unsigned char *sha1)
                return 0;
        if (MAX_REVS <= ref_name_cnt) {
                fprintf(stderr, "warning: ignoring %s; "
-                       "cannot handle more than %d refs",
+                       "cannot handle more than %d refs\n",
                        refname, MAX_REVS);
                return 0;
        }
@@ -537,7 +537,7 @@ int main(int ac, char **av)
                if (MAX_REVS <= num_rev)
                        die("cannot handle more than %d revs.", MAX_REVS);
                if (get_sha1(ref_name[num_rev], revkey))
-                       die("'%s' is not a valid ref.\n", ref_name[num_rev]);
+                       die("'%s' is not a valid ref.", ref_name[num_rev]);
                commit = lookup_commit_reference(revkey);
                if (!commit)
                        die("cannot find commit %s (%s)",