git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH RFC 1/6] send-email: Add --delay for separating emails

From
Michael Witten <mfwitten@gmail.com>
Date
Apr 7, 2009, 21:25 UTC
Message-ID
<1239139522-24118-1-git-send-email-mfwitten@gmail.com>

When sending a patch series, the emails often arrive at the final destination out of order; though these emails should be chained via the In-Reply-To headers, some mail-viewing systems display by order of arrival instead.

The --delay option provides a means for specifying that there should be a certain number of seconds of delay between sending emails, so that the arrival order can be controlled better.

Signed-off-by: Michael Witten <mfwitten@gmail.com>
---
 Documentation/git-send-email.txt |    5 +++++
 git-send-email.perl              |   17 +++++++++++++----
 2 files changed, 18 insertions(+), 4 deletions(-)
diff --git a/Documentation/git-send-email.txt b/Documentation/git-send-email.txt
index 10dfd66..4b656ca 100644
--- a/Documentation/git-send-email.txt
+++ b/Documentation/git-send-email.txt
@@ -97,6 +97,11 @@ The --to option must be repeated for each user you want on the to list.
 Sending
 ~~~~~~~
 
+--delay::
+	Specify the minimum number of seconds of delay that should occur
+	between sending emails. This number should be an integer >= zero.
+	Default is the value of the 'sendemail.delay' configuration variable.
+
 --envelope-sender::
 	Specify the envelope sender used to send the emails.
 	This is useful if your default address is not the address that is
diff --git a/git-send-email.perl b/git-send-email.perl
index 172b53c..273c8c7 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -56,6 +56,7 @@ git send-email [options] <file | directory | rev-list options >
     --compose                      * Open an editor for introduction.
 
   Sending:
+    --delay                 <int>  * Delay (seconds) between sending emails.
     --envelope-sender       <str>  * Email envelope sender.
     --smtp-server       <str:int>  * Outgoing SMTP server to use. The port
                                      is optional. Default 'localhost'.
@@ -180,7 +181,7 @@ sub do_edit {
 }
 
 # Variables with corresponding config settings
-my ($thread, $chain_reply_to, $suppress_from, $signed_off_by_cc, $cc_cmd);
+my ($delay, $thread, $chain_reply_to, $suppress_from, $signed_off_by_cc, $cc_cmd);
 my ($smtp_server, $smtp_server_port, $smtp_authuser, $smtp_encryption);
 my ($identity, $aliasfiletype, @alias_files, @smtp_host_parts);
 my ($validate, $confirm);
@@ -196,6 +197,7 @@ my %config_bool_settings = (
 );
 
 my %config_settings = (
+    "delay" => \$delay,
     "smtpserver" => \$smtp_server,
     "smtpserverport" => \$smtp_server_port,
     "smtpuser" => \$smtp_authuser,
@@ -247,6 +249,7 @@ my $rc = GetOptions("sender|from=s" => \$sender,
 		    "cc=s" => \@initial_cc,
 		    "bcc=s" => \@bcclist,
 		    "chain-reply-to!" => \$chain_reply_to,
+		    "delay=i" => \$delay,
 		    "smtp-server=s" => \$smtp_server,
 		    "smtp-server-port=s" => \$smtp_server_port,
 		    "smtp-user=s" => \$smtp_authuser,
@@ -973,8 +976,9 @@ $references = $initial_reply_to || '';
 $subject = $initial_subject;
 $message_num = 0;
 
-foreach my $t (@files) {
-	open(F,"<",$t) or die "can't open file $t";
+for (my $index = 0; $index < @files; $index++) {
+	my $file = $files[$index];
+	open(F,"<",$file) or die "can't open file $file";
 
 	my $author = undef;
 	my $author_encoding;
@@ -1083,7 +1087,7 @@ foreach my $t (@files) {
 	close F;
 
 	if (defined $cc_cmd && !$suppress_cc{'cccmd'}) {
-		open(F, "$cc_cmd $t |")
+		open(F, "$cc_cmd $file |")
 			or die "(cc-cmd) Could not execute '$cc_cmd'";
 		while(<F>) {
 			my $c = $_;
@@ -1128,6 +1132,11 @@ foreach my $t (@files) {
 
 	send_message();
 
+	if ($delay && $index < $#files) {
+		my $this_long = $delay;
+		while (($this_long -= sleep $this_long) > 0) {}
+	}
+
 	# set up for the next message
 	if ($chain_reply_to || !defined $reply_to || length($reply_to) == 0) {
 		$reply_to = $message_id;
-- 
1.6.2.2.448.g61445.dirty
Next: Michael Witten
Message 1 of 30 in “send-email: Add --delay for separating emails”
  1. 1/6 send-email: Add --delay for separating emailsMichael Witten, Apr 7, 2009
  2. 2/6 send-email: --smtp-server-port should take an integerMichael Witten, Apr 7, 2009
  3. 3/6 send-email: Handle "GIT:" rather than "GIT: " during --composeMichael Witten, Apr 7, 2009
  4. 4/6 send-email: --compose takes optional argument to existing fileMichael Witten, Apr 7, 2009
  5. 5/6 send-email: Cleanup the usage text a bitMichael Witten, Apr 7, 2009
  6. 6/6 send-email: Remove horrible mix of tabs and spacesMichael Witten, Apr 7, 2009
  7. demerphqApr 7, 2009
  8. Michael WittenApr 7, 2009
  9. demerphqApr 7, 2009
  10. demerphqApr 7, 2009
  11. Jeff KingApr 7, 2009
  12. Andreas EricssonApr 7, 2009
  13. Tomas CarneckyApr 7, 2009
  14. Jeff KingApr 8, 2009
  15. Junio C HamanoApr 11, 2009
  16. Junio C HamanoApr 11, 2009
  17. Junio C HamanoApr 11, 2009
  18. Michael WittenApr 11, 2009
  19. Junio C HamanoApr 12, 2009
  20. Michael WittenApr 12, 2009
  21. Junio C HamanoApr 7, 2009
  22. Junio C HamanoApr 11, 2009
  23. Wesley J. LandakerApr 11, 2009
  24. Michael WittenApr 11, 2009
  25. Jeff KingApr 7, 2009
  26. 1/6 Re: send-email: Add --delay for separating emailsNicolas Sebrecht, Apr 7, 2009
  27. Andreas EricssonApr 7, 2009
  28. Jeff KingApr 8, 2009
  29. Jeff KingApr 8, 2009
  30. Junio C HamanoApr 7, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.