From: Paul Tan <pyokagan@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org,
Johannes Schindelin <johannes.schindelin@gmx.de>,
Stefan Beller <sbeller@google.com>
Subject: Re: [PATCH v5 00/44] Make git-am a builtin
Date: Wed, 8 Jul 2015 16:19:02 +0800 [thread overview]
Message-ID: <20150708081902.GA8606@yoshi.chippynet.com> (raw)
In-Reply-To: <xmqqa8v7yts9.fsf@gitster.dls.corp.google.com>
On Wed, Jul 08, 2015 at 12:48:06AM -0700, Junio C Hamano wrote:
> Junio C Hamano <gitster@pobox.com> writes:
> $ git am -s ./+dt
> ...
> error: patch failed: builtin/update-ref.c:421
> error: builtin/update-ref.c: patch does not apply
> Patch failed at 0007 update-ref and tag: add --create-reflog arg
> The copy of the patch that failed is found in:.git/rebase-apply/patch
> When you have resolved this problem, run "git am --continue".
> If you prefer to skip this patch, run "git am --skip" instead.
> To restore the original branch and stop patching, run "git am --abort".
> $ git am -3
> git: builtin/am.c:1332: parse_mail: Assertion `!state->author_name'
> failed.
> Aborted (core dumped)
Ah, it's because parse_mail() does not expect to be called while the
authorship and commit msg fields have been filled up. This is a wrong
assumption, of course.
So the fix would be to remove the assert()s, as follows:
diff --git a/builtin/am.c b/builtin/am.c
index c548129..ab560ab 100644
--- a/builtin/am.c
+++ b/builtin/am.c
@@ -1327,16 +1327,20 @@ static int parse_mail(struct am_state *state, const char *mail)
if (state->append_signoff)
append_signoff(&msg, 0, 0);
- assert(!state->author_name);
+ if (state->author_name)
+ free(state->author_name);
state->author_name = strbuf_detach(&author_name, NULL);
- assert(!state->author_email);
+ if (state->author_email)
+ free(state->author_email);
state->author_email = strbuf_detach(&author_email, NULL);
- assert(!state->author_date);
+ if (state->author_date)
+ free(state->author_date);
state->author_date = strbuf_detach(&author_date, NULL);
- assert(!state->msg);
+ if (state->msg)
+ free(state->msg);
state->msg = strbuf_detach(&msg, &state->msg_len);
finish:
@@ -1392,7 +1396,9 @@ static void get_commit_info(struct am_state *state, struct commit *commit)
die(_("invalid ident line: %s"), sb.buf);
}
- assert(!state->author_name);
+ if (state->author_name)
+ free(state->author_name);
+
if (ident_split.name_begin) {
strbuf_add(&sb, ident_split.name_begin,
ident_split.name_end - ident_split.name_begin);
@@ -1400,7 +1406,9 @@ static void get_commit_info(struct am_state *state, struct commit *commit)
} else
state->author_name = xstrdup("");
- assert(!state->author_email);
+ if (state->author_email)
+ free(state->author_email);
+
if (ident_split.mail_begin) {
strbuf_add(&sb, ident_split.mail_begin,
ident_split.mail_end - ident_split.mail_begin);
@@ -1410,13 +1418,17 @@ static void get_commit_info(struct am_state *state, struct commit *commit)
author_date = show_ident_date(&ident_split, DATE_NORMAL);
strbuf_addstr(&sb, author_date);
- assert(!state->author_date);
+
+ if (state->author_date)
+ free(state->author_date);
state->author_date = strbuf_detach(&sb, NULL);
- assert(!state->msg);
msg = strstr(buffer, "\n\n");
if (!msg)
die(_("unable to parse commit %s"), sha1_to_hex(commit->object.sha1));
+
+ if (state->msg)
+ free(state->msg);
state->msg = xstrdup(msg + 2);
state->msg_len = strlen(state->msg);
}
next prev parent reply other threads:[~2015-07-08 8:20 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-07 14:20 [PATCH v5 00/44] Make git-am a builtin Paul Tan
2015-07-07 14:20 ` [PATCH v5 01/44] wrapper: implement xopen() Paul Tan
2015-07-07 14:20 ` [PATCH v5 02/44] wrapper: implement xfopen() Paul Tan
2015-07-07 14:20 ` [PATCH v5 03/44] builtin-am: implement skeletal builtin am Paul Tan
2015-07-07 14:20 ` [PATCH v5 04/44] builtin-am: implement patch queue mechanism Paul Tan
2015-07-07 14:20 ` [PATCH v5 05/44] builtin-am: split out mbox/maildir patches with git-mailsplit Paul Tan
2015-07-07 14:20 ` [PATCH v5 06/44] builtin-am: auto-detect mbox patches Paul Tan
2015-07-07 14:20 ` [PATCH v5 07/44] builtin-am: extract patch and commit info with git-mailinfo Paul Tan
2015-07-07 14:20 ` [PATCH v5 08/44] builtin-am: apply patch with git-apply Paul Tan
2015-07-07 14:20 ` [PATCH v5 09/44] builtin-am: implement committing applied patch Paul Tan
2015-07-07 14:20 ` [PATCH v5 10/44] builtin-am: refuse to apply patches if index is dirty Paul Tan
2015-07-07 14:20 ` [PATCH v5 11/44] builtin-am: implement --resolved/--continue Paul Tan
2015-07-07 14:20 ` [PATCH v5 12/44] builtin-am: implement --skip Paul Tan
2015-07-13 19:05 ` Stefan Beller
2015-07-14 9:34 ` Paul Tan
2015-07-14 16:54 ` Stefan Beller
2015-07-18 15:22 ` Paul Tan
2015-07-07 14:20 ` [PATCH v5 13/44] builtin-am: implement --abort Paul Tan
2015-07-07 14:20 ` [PATCH v5 14/44] builtin-am: reject patches when there's a session in progress Paul Tan
2015-07-07 14:20 ` [PATCH v5 15/44] builtin-am: implement -q/--quiet Paul Tan
2015-07-07 14:20 ` [PATCH v5 16/44] builtin-am: exit with user friendly message on failure Paul Tan
2015-07-07 14:20 ` [PATCH v5 17/44] builtin-am: implement -s/--signoff Paul Tan
2015-07-07 14:20 ` [PATCH v5 18/44] cache-tree: introduce write_index_as_tree() Paul Tan
2015-07-07 20:10 ` Junio C Hamano
2015-07-07 14:20 ` [PATCH v5 19/44] builtin-am: implement --3way, am.threeWay Paul Tan
2015-07-07 20:14 ` Junio C Hamano
2015-07-14 9:32 ` Paul Tan
2015-07-07 14:20 ` [PATCH v5 20/44] builtin-am: implement --rebasing mode Paul Tan
2015-07-07 14:20 ` [PATCH v5 21/44] builtin-am: bypass git-mailinfo when --rebasing Paul Tan
2015-07-07 14:20 ` [PATCH v5 22/44] builtin-am: handle stray state directory Paul Tan
2015-07-07 14:20 ` [PATCH v5 23/44] builtin-am: implement -u/--utf8 Paul Tan
2015-07-07 14:20 ` [PATCH v5 24/44] builtin-am: implement -k/--keep, --keep-non-patch Paul Tan
2015-07-07 14:20 ` [PATCH v5 25/44] builtin-am: implement --[no-]message-id, am.messageid Paul Tan
2015-07-07 14:20 ` [PATCH v5 26/44] builtin-am: support --keep-cr, am.keepcr Paul Tan
2015-07-07 14:20 ` [PATCH v5 27/44] builtin-am: implement --[no-]scissors Paul Tan
2015-07-07 14:20 ` [PATCH v5 28/44] builtin-am: pass git-apply's options to git-apply Paul Tan
2015-07-07 14:20 ` [PATCH v5 29/44] builtin-am: implement --ignore-date Paul Tan
2015-07-07 14:20 ` [PATCH v5 30/44] builtin-am: implement --committer-date-is-author-date Paul Tan
2015-07-07 14:20 ` [PATCH v5 31/44] builtin-am: implement -S/--gpg-sign, commit.gpgsign Paul Tan
2015-07-07 14:20 ` [PATCH v5 32/44] builtin-am: invoke post-rewrite hook Paul Tan
2015-07-07 14:20 ` [PATCH v5 33/44] builtin-am: support automatic notes copying Paul Tan
2015-07-07 14:20 ` [PATCH v5 34/44] builtin-am: invoke applypatch-msg hook Paul Tan
2015-07-07 14:20 ` [PATCH v5 35/44] builtin-am: invoke pre-applypatch hook Paul Tan
2015-07-07 14:20 ` [PATCH v5 36/44] builtin-am: invoke post-applypatch hook Paul Tan
2015-07-07 14:20 ` [PATCH v5 37/44] builtin-am: rerere support Paul Tan
2015-07-07 14:20 ` [PATCH v5 38/44] builtin-am: support and auto-detect StGit patches Paul Tan
2015-07-07 14:20 ` [PATCH v5 39/44] builtin-am: support and auto-detect StGit series files Paul Tan
2015-07-07 14:20 ` [PATCH v5 40/44] builtin-am: support and auto-detect mercurial patches Paul Tan
2015-07-07 14:20 ` [PATCH v5 41/44] builtin-am: implement -i/--interactive Paul Tan
2015-07-07 14:21 ` [PATCH v5 42/44] builtin-am: implement legacy -b/--binary option Paul Tan
2015-07-07 14:21 ` [PATCH v5 43/44] builtin-am: check for valid committer ident Paul Tan
2015-07-07 14:21 ` [PATCH v5 44/44] builtin-am: remove redirection to git-am.sh Paul Tan
2015-07-07 18:52 ` [PATCH v5 00/44] Make git-am a builtin Junio C Hamano
2015-07-07 19:25 ` Paul Tan
2015-07-08 7:31 ` Junio C Hamano
2015-07-08 7:44 ` Paul Tan
2015-07-08 7:48 ` Junio C Hamano
2015-07-08 8:19 ` Paul Tan [this message]
2015-07-09 6:00 ` Junio C Hamano
2015-07-12 12:29 ` Paul Tan
2015-07-12 17:32 ` Junio C Hamano
2015-07-13 22:31 ` Junio C Hamano
2015-07-14 10:08 ` Paul Tan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150708081902.GA8606@yoshi.chippynet.com \
--to=pyokagan@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=johannes.schindelin@gmx.de \
--cc=sbeller@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.