Junio C Hamano <gitster@xxxxxxxxx> writes: > In the longer term, I think "git-rebase--am.sh" should be rewritten to > have format-patch avoid the cost of actually generating the patch text, > and the "mailinfo" call that comes above the context shown in this patch > should be made conditional---when using "am" for rebasing we do not really > care anything but the commit object names, and everything else is figured > out from the commit this codepath. And here is a quick hack to do that using "log --cherry-pick --right-only". git-am.sh | 44 ++++++++++++++++++++++++-------------------- git-rebase--am.sh | 12 +++++++++--- 2 files changed, 33 insertions(+), 23 deletions(-) diff --git a/git-am.sh b/git-am.sh index 9042432..b79ccc5 100755 --- a/git-am.sh +++ b/git-am.sh @@ -641,32 +641,36 @@ do # by the user, or the user can tell us to do so by --resolved flag. case "$resume" in '') - git mailinfo $keep $no_inbody_headers $scissors $utf8 "$dotest/msg" "$dotest/patch" \ - <"$dotest/$msgnum" >"$dotest/info" || - stop_here $this - - # skip pine's internal folder data - sane_grep '^Author: Mail System Internal Data$' \ - <"$dotest"/info >/dev/null && - go_next && continue - - test -s "$dotest/patch" || { - eval_gettextln "Patch is empty. Was it split wrong? -If you would prefer to skip this patch, instead run \"\$cmdline --skip\". -To restore the original branch and stop patching run \"\$cmdline --abort\"." - stop_here $this - } rm -f "$dotest/original-commit" "$dotest/author-script" - if test -f "$dotest/rebasing" && + + if test -f "$dotest/rebasing" + then commit=$(sed -e 's/^From \([0-9a-f]*\) .*/\1/' \ -e q "$dotest/$msgnum") && - test "$(git cat-file -t "$commit")" = commit - then + test "$(git cat-file -t "$commit")" = commit || { + stop_here $this + } git cat-file commit "$commit" | sed -e '1,/^$/d' >"$dotest/msg-clean" - echo "$commit" > "$dotest/original-commit" - get_author_ident_from_commit "$commit" > "$dotest/author-script" + echo "$commit" >"$dotest/original-commit" + get_author_ident_from_commit "$commit" >"$dotest/author-script" + git diff-tree -p --root "$commit" >"$dotest/patch" else + git mailinfo $keep $no_inbody_headers \ + $scissors $utf8 "$dotest/msg" "$dotest/patch" \ + <"$dotest/$msgnum" >"$dotest/info" || + stop_here $this + + # skip pine's internal folder data + sane_grep '^Author: Mail System Internal Data$' \ + <"$dotest"/info >/dev/null && + go_next && continue + test -s "$dotest/patch" || { + eval_gettextln "Patch is empty. Was it split wrong? +If you would prefer to skip this patch, instead run \"\$cmdline --skip\". +To restore the original branch and stop patching run \"\$cmdline --abort\"." + stop_here $this + } { sed -n '/^Subject/ s/Subject: //p' "$dotest/info" echo diff --git a/git-rebase--am.sh b/git-rebase--am.sh [...] -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html