Merge branch 'js/lift-parent-count-limit'
authorJunio C Hamano <gitster@pobox.com>
Fri, 10 Jan 2014 18:33:36 +0000 (10:33 -0800)
committerJunio C Hamano <gitster@pobox.com>
Fri, 10 Jan 2014 18:33:36 +0000 (10:33 -0800)
There is no reason to have a hardcoded upper limit of the number of
parents for an octopus merge, created via the graft mechanism.

* js/lift-parent-count-limit:
Remove the line length limit for graft files

1  2 
builtin/blame.c
commit.c
diff --combined builtin/blame.c
index 4916eb2bd26bed670aa3662e790abad9b336ebe3,9047b6ef4caa0aa5ca964cdfafdbc19985a3cb25..e44a6bb30a5a5299c6d57150dd2f23454b25891a
@@@ -1551,7 -1551,8 +1551,7 @@@ static void assign_blame(struct scorebo
                 */
                origin_incref(suspect);
                commit = suspect->commit;
 -              if (!commit->object.parsed)
 -                      parse_commit(commit);
 +              parse_commit(commit);
                if (reverse ||
                    (!(commit->object.flags & UNINTERESTING) &&
                     !(revs->max_age != -1 && commit->date < revs->max_age)))
@@@ -1803,17 -1804,17 +1803,17 @@@ static int prepare_lines(struct scorebo
  static int read_ancestry(const char *graft_file)
  {
        FILE *fp = fopen(graft_file, "r");
-       char buf[1024];
+       struct strbuf buf = STRBUF_INIT;
        if (!fp)
                return -1;
-       while (fgets(buf, sizeof(buf), fp)) {
+       while (!strbuf_getwholeline(&buf, fp, '\n')) {
                /* The format is just "Commit Parent1 Parent2 ...\n" */
-               int len = strlen(buf);
-               struct commit_graft *graft = read_graft_line(buf, len);
+               struct commit_graft *graft = read_graft_line(buf.buf, buf.len);
                if (graft)
                        register_commit_graft(graft, 0);
        }
        fclose(fp);
+       strbuf_release(&buf);
        return 0;
  }
  
diff --combined commit.c
index 5ff553872bdd5129c877c5decb478adefb87a9db,57ebea2aee30b00e86a620f7efc793420f214185..b9f9838110b4703a387fa256a138eff74b61589c
+++ b/commit.c
@@@ -79,7 -79,7 +79,7 @@@ struct commit *lookup_commit_reference_
        if (get_sha1_committish(name, sha1))
                return NULL;
        commit = lookup_commit_reference(sha1);
 -      if (!commit || parse_commit(commit))
 +      if (parse_commit(commit))
                return NULL;
        return commit;
  }
@@@ -196,19 -196,19 +196,19 @@@ bad_graft_data
  static int read_graft_file(const char *graft_file)
  {
        FILE *fp = fopen(graft_file, "r");
-       char buf[1024];
+       struct strbuf buf = STRBUF_INIT;
        if (!fp)
                return -1;
-       while (fgets(buf, sizeof(buf), fp)) {
+       while (!strbuf_getwholeline(&buf, fp, '\n')) {
                /* The format is just "Commit Parent1 Parent2 ...\n" */
-               int len = strlen(buf);
-               struct commit_graft *graft = read_graft_line(buf, len);
+               struct commit_graft *graft = read_graft_line(buf.buf, buf.len);
                if (!graft)
                        continue;
                if (register_commit_graft(graft, 1))
-                       error("duplicate graft data: %s", buf);
+                       error("duplicate graft data: %s", buf.buf);
        }
        fclose(fp);
+       strbuf_release(&buf);
        return 0;
  }
  
@@@ -341,13 -341,6 +341,13 @@@ int parse_commit(struct commit *item
        return ret;
  }
  
 +void parse_commit_or_die(struct commit *item)
 +{
 +      if (parse_commit(item))
 +              die("unable to parse commit %s",
 +                  item ? sha1_to_hex(item->object.sha1) : "(null)");
 +}
 +
  int find_commit_subject(const char *commit_buffer, const char **subject)
  {
        const char *eol;
@@@ -566,7 -559,7 +566,7 @@@ static void record_author_date(struct a
             buf;
             buf = line_end + 1) {
                line_end = strchrnul(buf, '\n');
 -              if (prefixcmp(buf, "author ")) {
 +              if (!starts_with(buf, "author ")) {
                        if (!line_end[0] || line_end[1] == '\n')
                                return; /* end of header */
                        continue;
@@@ -1113,7 -1106,7 +1113,7 @@@ int parse_signed_commit(const unsigned 
                next = next ? next + 1 : tail;
                if (in_signature && line[0] == ' ')
                        sig = line + 1;
 -              else if (!prefixcmp(line, gpg_sig_header) &&
 +              else if (starts_with(line, gpg_sig_header) &&
                         line[gpg_sig_header_len] == ' ')
                        sig = line + gpg_sig_header_len + 1;
                if (sig) {
@@@ -1193,7 -1186,7 +1193,7 @@@ static void parse_gpg_output(struct sig
        for (i = 0; i < ARRAY_SIZE(sigcheck_gpg_status); i++) {
                const char *found, *next;
  
 -              if (!prefixcmp(buf, sigcheck_gpg_status[i].check + 1)) {
 +              if (starts_with(buf, sigcheck_gpg_status[i].check + 1)) {
                        /* At the very beginning of the buffer */
                        found = buf + strlen(sigcheck_gpg_status[i].check + 1);
                } else {
@@@ -1356,7 -1349,7 +1356,7 @@@ void free_commit_extra_headers(struct c
        }
  }
  
 -int commit_tree(const struct strbuf *msg, unsigned char *tree,
 +int commit_tree(const struct strbuf *msg, const unsigned char *tree,
                struct commit_list *parents, unsigned char *ret,
                const char *author, const char *sign_commit)
  {
@@@ -1485,7 -1478,7 +1485,7 @@@ static const char commit_utf8_warn[] 
  "You may want to amend it after fixing the message, or set the config\n"
  "variable i18n.commitencoding to the encoding your project uses.\n";
  
 -int commit_tree_extended(const struct strbuf *msg, unsigned char *tree,
 +int commit_tree_extended(const struct strbuf *msg, const unsigned char *tree,
                         struct commit_list *parents, unsigned char *ret,
                         const char *author, const char *sign_commit,
                         struct commit_extra_header *extra)