From: Ryan Anderson <ryan@michonline.com>
To: git@vger.kernel.org
Cc: Ryan Anderson <ryan@michonline.com>
Subject: [PATCH 1/2] Make git-send-email-script ignore some unnecessary options when operating in batch mode.
Date: Mon, 5 Sep 2005 01:13:07 -0400 [thread overview]
Message-ID: <1125897187857-git-send-email-ryan@michonline.com> (raw)
In-Reply-To: <11258971871874-git-send-email-ryan@michonline.com>
Add a "--compose" option that uses $EDITOR to edit an "introductory" email to the patch series.
Signed-off-by: Ryan Anderson <ryan@michonline.com>
---
git-send-email-script | 86 ++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 81 insertions(+), 5 deletions(-)
b3c7bf0ee80c1d207c9208972f011540b4c0528f
diff --git a/git-send-email-script b/git-send-email-script
--- a/git-send-email-script
+++ b/git-send-email-script
@@ -25,9 +25,13 @@ use Data::Dumper;
use Email::Valid;
sub unique_email_list(@);
+sub cleanup_compose_files();
+
+# Constants (essentially)
+my $compose_filename = ".msg.$$";
# Variables we fill in automatically, or via prompting:
-my (@to,@cc,$initial_reply_to,$initial_subject,@files,$from);
+my (@to,@cc,$initial_reply_to,$initial_subject,@files,$from,$compose);
# Behavior modification variables
my ($chain_reply_to, $smtp_server) = (1, "localhost");
@@ -46,6 +50,7 @@ my $rc = GetOptions("from=s" => \$from,
"to=s" => \@to,
"chain-reply-to!" => \$chain_reply_to,
"smtp-server=s" => \$smtp_server,
+ "compose" => \$compose,
);
# Now, let's fill any that aren't set in with defaults:
@@ -69,7 +74,7 @@ while(<GITVAR>) {
}
close(GITVAR);
-
+my $prompting = 0;
if (!defined $from) {
$from = $author || $committer;
do {
@@ -79,6 +84,7 @@ if (!defined $from) {
$from = $_;
print "Emails will be sent from: ", $from, "\n";
+ $prompting++;
}
if (!@to) {
@@ -88,19 +94,21 @@ if (!@to) {
} while (!defined $_);
my $to = $_;
push @to, split /,/, $to;
+ $prompting++;
}
-if (!defined $initial_subject) {
+if (!defined $initial_subject && $compose) {
do {
$_ = $term->readline("What subject should the emails start with? ",
$initial_subject);
} while (!defined $_);
$initial_subject = $_;
+ $prompting++;
}
-if (!defined $initial_reply_to) {
+if (!defined $initial_reply_to && $prompting) {
do {
- $_= $term->readline("Message-ID to be used as In-Reply-To? ",
+ $_= $term->readline("Message-ID to be used as In-Reply-To for the first email? ",
$initial_reply_to);
} while (!defined $_);
@@ -112,6 +120,52 @@ if (!defined $smtp_server) {
$smtp_server = "localhost";
}
+if ($compose) {
+ # Note that this does not need to be secure, but we will make a small
+ # effort to have it be unique
+ open(C,">",$compose_filename)
+ or die "Failed to open for writing $compose_filename: $!";
+ print C "From \n";
+ printf C "Subject: %s\n\n", $initial_subject;
+ printf C <<EOT;
+GIT: Please enter your email below.
+GIT: Lines beginning in "GIT: " will be removed.
+GIT: Consider including an overall diffstat or table of contents
+GIT: for the patch you are writing.
+
+EOT
+ close(C);
+
+ my $editor = $ENV{EDITOR};
+ $editor = 'vi' unless defined $editor;
+ system($editor, $compose_filename);
+
+ open(C2,">",$compose_filename . ".final")
+ or die "Failed to open $compose_filename.final : " . $!;
+
+ open(C,"<",$compose_filename)
+ or die "Failed to open $compose_filename : " . $!;
+
+ while(<C>) {
+ next if m/^GIT: /;
+ print C2 $_;
+ }
+ close(C);
+ close(C2);
+
+ do {
+ $_ = $term->readline("Send this email? (y|n) ");
+ } while (!defined $_);
+
+ if (uc substr($_,0,1) ne 'Y') {
+ cleanup_compose_files();
+ exit(0);
+ }
+
+ @files = ($compose_filename . ".final");
+}
+
+
# Now that all the defaults are set, process the rest of the command line
# arguments and collect up the files that need to be processed.
for my $f (@ARGV) {
@@ -137,12 +191,24 @@ if (@files) {
git-send-email-script [options] <file | directory> [... file | directory ]
Options:
--from Specify the "From:" line of the email to be sent.
+
--to Specify the primary "To:" line of the email.
+
+ --compose Use \$EDITOR to edit an introductory message for the
+ patch series.
+
--subject Specify the initial "Subject:" line.
+ Only necessary if --compose is also set. If --compose
+ is not set, this will be prompted for.
+
--in-reply-to Specify the first "In-Reply-To:" header line.
+ Only used if --compose is also set. If --compose is not
+ set, this will be prompted for.
+
--chain-reply-to If set, the replies will all be to the previous
email sent, rather than to the first email sent.
Defaults to on.
+
--smtp-server If set, specifies the outgoing SMTP server to use.
Defaults to localhost.
@@ -278,6 +344,16 @@ foreach my $t (@files) {
make_message_id();
}
+if ($compose) {
+ cleanup_compose_files();
+}
+
+sub cleanup_compose_files() {
+ unlink($compose_filename, $compose_filename . ".final");
+
+}
+
+
sub unique_email_list(@) {
my %seen;
next prev parent reply other threads:[~2005-09-05 5:13 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-09-05 5:13 [PATCH 0/2] Update git-send-email-script with --compose Ryan Anderson
2005-09-05 5:13 ` Ryan Anderson [this message]
2005-09-05 5:13 ` [PATCH 2/2] Update documentation of --compose to git-send-email-script.txt Ryan Anderson
2005-09-05 11:16 ` [PATCH 0/2] Update git-send-email-script with --compose Martin Langhoff
2005-09-05 15:37 ` Ryan Anderson
2005-09-05 18:46 ` Junio C Hamano
2005-09-05 20:06 ` Martin Langhoff
2005-09-05 20:38 ` Junio C Hamano
2005-09-05 20:45 ` Martin Langhoff
2005-09-05 21:10 ` Junio C Hamano
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=1125897187857-git-send-email-ryan@michonline.com \
--to=ryan@michonline.com \
--cc=git@vger.kernel.org \
/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.