From: Shawn O. Pearce Date: Thu, 18 Oct 2007 07:11:17 +0000 (-0400) Subject: Merge branch 'maint' X-Git-Tag: v1.5.4-rc0~343 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/e75c55844fd0ff96d00173574b1e49cc472ca928?ds=inline;hp=-c Merge branch 'maint' * maint: Yet more 1.5.3.5 fixes mentioned in release notes cvsserver: Use exit 1 instead of die when req_Root fails. git-blame shouldn't crash if run in an unmerged tree git-config: print error message if the config file cannot be read fixing output of non-fast-forward output of post-receive-email --- e75c55844fd0ff96d00173574b1e49cc472ca928 diff --combined contrib/hooks/post-receive-email index b188aa3d67,28a06c7f38..2aa9bb501c --- a/contrib/hooks/post-receive-email +++ b/contrib/hooks/post-receive-email @@@ -138,15 -138,7 +138,15 @@@ generate_email( # Check if we've got anyone to send to if [ -z "$recipients" ]; then - echo >&2 "*** hooks.recipients is not set so no email will be sent" + case "$refname_type" in + "annotated tag") + config_name="hooks.announcelist" + ;; + *) + config_name="hooks.mailinglist" + ;; + esac + echo >&2 "*** $config_name is not set so no email will be sent" echo >&2 "*** for $refname update $oldrev->$newrev" exit 0 fi @@@ -331,7 -323,7 +331,7 @@@ generate_update_branch_email( echo " via $rev ($revtype)" done - if [ -z "$fastforward" ]; then + if [ "$fast_forward" ]; then echo " from $oldrev ($oldrev_type)" else # 1. Existing revisions were removed. In this case newrev is a diff --combined read-cache.c index 56202d13df,928e8fa1ae..056b322fb0 --- a/read-cache.c +++ b/read-cache.c @@@ -149,6 -149,8 +149,8 @@@ static int ce_match_stat_basic(struct c else if (ce_compare_gitlink(ce)) changed |= DATA_CHANGED; return changed; + case 0: /* Special case: unmerged file in index */ + return MODE_CHANGED | DATA_CHANGED | TYPE_CHANGED; default: die("internal error: ce_mode is %o", ntohl(ce->ce_mode)); } @@@ -346,7 -348,6 +348,7 @@@ int remove_file_from_index(struct index int pos = index_name_pos(istate, path, strlen(path)); if (pos < 0) pos = -pos-1; + cache_tree_invalidate_path(istate->cache_tree, path); while (pos < istate->cache_nr && !strcmp(istate->cache[pos]->name, path)) remove_index_entry_at(istate, pos); return 0; @@@ -431,6 -432,7 +433,6 @@@ int add_file_to_index(struct index_stat die("unable to add %s to index",path); if (verbose) printf("add '%s'\n", path); - cache_tree_invalidate_path(istate->cache_tree, path); return 0; } @@@ -698,7 -700,6 +700,7 @@@ static int add_index_entry_with_check(s int ok_to_replace = option & ADD_CACHE_OK_TO_REPLACE; int skip_df_check = option & ADD_CACHE_SKIP_DFCHECK; + cache_tree_invalidate_path(istate->cache_tree, ce->name); pos = index_name_pos(istate, ce->name, ntohs(ce->ce_flags)); /* existing match? Just replace it. */ @@@ -1136,7 -1137,7 +1138,7 @@@ int write_index(struct index_state *ist { SHA_CTX c; struct cache_header hdr; - int i, removed; + int i, err, removed; struct cache_entry **cache = istate->cache; int entries = istate->cache_nr; @@@ -1165,15 -1166,16 +1167,15 @@@ /* Write extension data here */ if (istate->cache_tree) { - unsigned long sz; - void *data = cache_tree_write(istate->cache_tree, &sz); - if (data && - !write_index_ext_header(&c, newfd, CACHE_EXT_TREE, sz) && - !ce_write(&c, newfd, data, sz)) - free(data); - else { - free(data); + struct strbuf sb; + + strbuf_init(&sb, 0); + cache_tree_write(&sb, istate->cache_tree); + err = write_index_ext_header(&c, newfd, CACHE_EXT_TREE, sb.len) < 0 + || ce_write(&c, newfd, sb.buf, sb.len) < 0; + strbuf_release(&sb); + if (err) return -1; - } } return ce_flush(&c, newfd); }