Merge branch 'maint'
authorShawn O. Pearce <spearce@spearce.org>
Thu, 18 Oct 2007 07:11:17 +0000 (03:11 -0400)
committerShawn O. Pearce <spearce@spearce.org>
Thu, 18 Oct 2007 07:11:17 +0000 (03:11 -0400)
* 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

1  2 
contrib/hooks/post-receive-email
read-cache.c
index b188aa3d67eda77b168c61a53162a25abcc56e7d,28a06c7f381f9386c6f715e6c3ab89f361d12bc2..2aa9bb501c2768770d8aed5de93dda8afc29b427
@@@ -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 56202d13dfcfe4ed583fee7b4063596bc1ef417e,928e8fa1aee22a0a79c57ca675576d4998503ea9..056b322fb0c83aeda378f548e13f84d4a65c1e29
@@@ -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;
  
  
        /* 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);
  }