Petr, since you've asked for help on this, here you are:
$ tg mail [NAME]
a simple script to send one patch over email.
All it does is
- call `tg patch` for actual patch preparation
- extract email addresses from whom and where to send a mail
- boils down to `git send-email`
It is self-hosted -- this mail was send by me with
$ tg mail t/tg-mail
P.S. I'm not a bash guy, please do not beat me too much...
Signed-off-by: Kirill Smelkov <redacted>
---
.gitignore | 2 ++
README | 18 ++++++++++++++++++
tg-mail.sh | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 73 insertions(+), 0 deletions(-)
@@ -272,6 +272,24 @@ tg patch TODO: tg patch -i to base at index instead of branch, -w for working tree+tg mail+~~~~~~~+ Send a patch from the current or specified topic branch as+ email.++ Takes the patch given on the command line and emails it out.+ Destination addresses such as To, Cc and Bcc are taken from the+ patch header.++ Since it actually boils down to `git send-email` please refer to+ it's documentation for details on how to setup email for git.+++ TODO: tg mail patchfile to mail an already exported patch+ TODO: mailing patch series+ TODO: specifying additional options and addresses on command+ line+ tg remote ~~~~~~~~~ Register given remote as TopGit-controlled. This will create
@@ -0,0 +1,53 @@+#!/bin/sh+# TopGit - A different patch queue manager+# GPLv2++name=+++## Parse options++while[-n"$1"];do+arg="$1";shift+case"$arg"in+-*)+echo"Usage: tg [...] mail [NAME]">&2+exit1;;+*)+[-z"$name"]||die"name already specified ($name)"+name="$arg";;+esac+done++# TODO refactor me into something common?+[-n"$name"]||name="$(gitsymbolic-refHEAD|sed's#^refs/heads/##')"+base_rev="$(gitrev-parse--short--verify"refs/top-bases/$name"2>/dev/null)"||+die"not a TopGit-controlled branch"+++patchfile="$(mktemp-ttg-mail.XXXXXX)"++$tgpatch$name>"$patchfile"++hlines=$(grep-n-m1'^---'"$patchfile"|sed's/:---//')+header=$(head-$(($hlines-1))"$patchfile")++++from="$(echo"$header"|grep'^From:'|sed's/From:\s*//')"+to="$(echo"$header"|grep'^To:'|sed's/To:\s*//')"+++# XXX I can't get quoting right without arrays+[-n"$from"]&&from=(--from"$from")+[-n"$to"]&&to=(--to"$to")# FIXME there could be multimple To++people=()+[-n"$from"]&&people=("${people[@]}""${from[@]}")+[-n"$to"]&&people=("${people[@]}""${to[@]}")+++# NOTE git-send-email handles cc itself+gitsend-email"${people[@]}""$patchfile"++rm"$patchfile"
On Fri, Sep 19, 2008 at 11:08, Kirill Smelkov [off-list ref] wrote:
Petr, since you've asked for help on this, here you are:
$ tg mail [NAME]
a simple script to send one patch over email.
All it does is
- call `tg patch` for actual patch preparation
- extract email addresses from whom and where to send a mail
That shouldn't be needed. git send-email parses Cc: headers and the
To: comes from 'git config topgit.to', so you can re-use this.
Bert
On Fri, Sep 19, 2008 at 11:52:03AM +0200, Bert Wesarg wrote:
On Fri, Sep 19, 2008 at 11:08, Kirill Smelkov [off-list ref] wrote:
quoted
Petr, since you've asked for help on this, here you are:
$ tg mail [NAME]
a simple script to send one patch over email.
All it does is
- call `tg patch` for actual patch preparation
- extract email addresses from whom and where to send a mail
That shouldn't be needed. git send-email parses Cc: headers and the
Exactly for this reason I do not extract Cc. And git send-mail does not
extract From: -- it just asks to confirm From is GIT_COMMITTER_IDENT,
and there is no option to stop it doing so except providing explicit
--from <someone> (maybe i'm missing something?).
To: comes from 'git config topgit.to', so you can re-use this.
Yes, it comes directly to .topmsg when `tg create` is done, so I thought
the main source of information is the patch itself -- users may want to
edit that To: by hand or add another To: lines.
and what If a patch is already exported as a file, and I want to
send/resend it upstream right from that file?
We may want to look for topgit.to too though.
--
Всего хорошего, Кирилл.
On Fri, Sep 19, 2008 at 12:04, Kirill Smelkov [off-list ref] wrote:
On Fri, Sep 19, 2008 at 11:52:03AM +0200, Bert Wesarg wrote:
quoted
On Fri, Sep 19, 2008 at 11:08, Kirill Smelkov [off-list ref] wrote:
quoted
Petr, since you've asked for help on this, here you are:
$ tg mail [NAME]
a simple script to send one patch over email.
All it does is
- call `tg patch` for actual patch preparation
- extract email addresses from whom and where to send a mail
That shouldn't be needed. git send-email parses Cc: headers and the
Exactly for this reason I do not extract Cc. And git send-mail does not
extract From: -- it just asks to confirm From is GIT_COMMITTER_IDENT,
and there is no option to stop it doing so except providing explicit
--from <someone> (maybe i'm missing something?).
Ahh, my fault, I should take a break, sorry for the noise.
quoted
To: comes from 'git config topgit.to', so you can re-use this.
Yes, it comes directly to .topmsg when `tg create` is done, so I thought
the main source of information is the patch itself -- users may want to
edit that To: by hand or add another To: lines.
Yeah, my fault, I noticed this too, its just a template. better to
extract it from the patch.
and what If a patch is already exported as a file, and I want to
send/resend it upstream right from that file?
We may want to look for topgit.to too though.
--
Всего хорошего, Кирилл.
On Fri, Sep 19, 2008 at 12:20:49PM +0200, Bert Wesarg wrote:
On Fri, Sep 19, 2008 at 12:04, Kirill Smelkov [off-list ref] wrote:
quoted
On Fri, Sep 19, 2008 at 11:52:03AM +0200, Bert Wesarg wrote:
quoted
On Fri, Sep 19, 2008 at 11:08, Kirill Smelkov [off-list ref] wrote:
quoted
Petr, since you've asked for help on this, here you are:
$ tg mail [NAME]
a simple script to send one patch over email.
All it does is
- call `tg patch` for actual patch preparation
- extract email addresses from whom and where to send a mail
That shouldn't be needed. git send-email parses Cc: headers and the
Exactly for this reason I do not extract Cc. And git send-mail does not
extract From: -- it just asks to confirm From is GIT_COMMITTER_IDENT,
and there is no option to stop it doing so except providing explicit
--from <someone> (maybe i'm missing something?).
Ahh, my fault, I should take a break, sorry for the noise.
No problem, your "noise" is welcome :)
--
Всего хорошего, Кирилл.