Re: patch submission process, was Re: [PATCH v6 06/16] merge_recursive: abort properly upon errors
From: Jeff King <hidden>
Date: 2016-08-09 18:59:26
On Tue, Aug 09, 2016 at 11:50:51AM -0700, Stefan Beller wrote:
quoted
Could you share your mutt set up pleaaase? I've been wanting this for a long time, but never used mutt long enough to bother with a proper setup like this (I blame gmail).That is my complaint^H^H^H^H position, too. I always wanted to switch to a more powerful setup than git-send-email for sending /gmail for reading, but I could not convince myself the steep learning/setup curve is worth it eventually as it is "not broken enough" to do the change right now.
I think I may have shared it before, but here is the script I use to
send emails. It dumps you in mutt, and then I have:
macro index,pager b ":set edit_headers=yes<enter><resend-message>:set edit_headers=no<enter>"
to send the message ("b" is for "bounce", which I think may be another
Pine-ism).
-- >8 --
#!/bin/sh
upstream_branch() {
current=`git symbolic-ref HEAD`
upstream=`git for-each-ref --format='%(upstream)' "$current"`
if test -n "$upstream"; then
echo $upstream
else
echo origin
fi
}
get_reply_headers() {
perl -ne '
if (defined $opt) {
if (/^\s+(.*)/) {
$val .= " $1";
next;
}
print "--$opt=", quotemeta($val), " ";
$opt = $val = undef;
}
if (/^(cc|to):\s*(.*)/i) {
$opt = lc($1);
$val = $2;
}
elsif (/^message-id:\s*(.*)/i) {
$opt = "in-reply-to";
$val = $1;
}
elsif (/^subject:\s*\[PATCH v(\d+)/i) {
print "-v$1 ";
}
elsif (/^$/) {
last;
}
'
}
has_nonoption=
for i in "$@"; do
case "$i" in
-[0-9]) has_nonoption=yes ;;
-*) ;;
*) has_nonoption=yes
esac
done
git rev-parse || exit 1
: ${REPLY:=$HOME/patch}
test -e "$REPLY" && eval "set -- `get_reply_headers <\"$REPLY\"` \"\$@\""
test "$has_nonoption" = "yes" || set -- "$@" `upstream_branch`
git format-patch -s --stdout --from "$@" >.mbox
if test -t 1; then
mutt -e 'set sort=mailbox-order' -f .mbox
else
perl -lne '
if (/^Subject: (.*)/) {
$subject = $1;
}
elsif ($subject && /^\s+(.*)/) {
$subject .= " $1";
}
elsif ($subject) {
print $subject;
$subject = undef;
}
' .mbox |
sed -e 's/\[PATCH /[/' \
-e 's/]/]:/' \
-e 's/^/ /'
fi
rm -f .mbox