All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pierre Habouzit <madcoder@debian.org>
To: git@vger.kernel.org
Cc: Pierre Habouzit <madcoder@debian.org>
Subject: [PATCH] git send-email: allow any rev-list option as an argument.
Date: Fri, 31 Oct 2008 17:52:05 +0100	[thread overview]
Message-ID: <1225471925-2750-1-git-send-email-madcoder@debian.org> (raw)
In-Reply-To: <1225450632-7230-3-git-send-email-madcoder@debian.org>

Signed-off-by: Pierre Habouzit <madcoder@debian.org>
---

  One can consider to squash that on top of
  <1225450632-7230-3-git-send-email-madcoder@debian.org> to be able to pass
  all non path arguments before a possible '--' to git format-patch.

  The downside of this patch is that:

    git send-email -C -C -M origin/next

  will send the content of origin/next if it's an existing file. Of course a
  disambiguation can be:

    git send-email -C -C -M refs/heads/origin/next

  But again if this file also exists, one is basically screwed. I see no
  proper way to fix that, unless to change git-send-email behaviour at once.


  Though I believe this semantics to be better than the one in the previous
  patch, as it's often a good idea to pass -M -C -C to format-patch, which is
  currently impossible. It also allow revision lists to work as expected (wrt
  --all, --not and so on).

  Comments are welcomed.


 Documentation/git-send-email.txt |    2 +-
 git-send-email.perl              |   19 ++++++++++++++-----
 2 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/Documentation/git-send-email.txt b/Documentation/git-send-email.txt
index 9ee81d5..39d6da9 100644
--- a/Documentation/git-send-email.txt
+++ b/Documentation/git-send-email.txt
@@ -8,7 +8,7 @@ git-send-email - Send a collection of patches as emails
 
 SYNOPSIS
 --------
-'git send-email' [options] <file|directory|rev-list>...
+'git send-email' [options] <file|directory|rev-list options>...
 
 
 DESCRIPTION
diff --git a/git-send-email.perl b/git-send-email.perl
index 5c189a7..8667e0b 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -25,6 +25,8 @@ use Term::ANSIColor;
 use File::Temp qw/ tempdir /;
 use Git;
 
+Getopt::Long::Configure qw/ pass_through /;
+
 package FakeTerm;
 sub new {
 	my ($class, $reason) = @_;
@@ -39,7 +41,7 @@ package main;
 
 sub usage {
 	print <<EOT;
-git send-email [options] <file | directory | rev-list >
+git send-email [options] <file | directory | rev-list options >
 
   Composing:
     --from                  <str>  * Email From:
@@ -383,8 +385,12 @@ if (@alias_files and $aliasfiletype and defined $parse_alias{$aliasfiletype}) {
 
 # 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) {
-	if (-d $f) {
+my @rev_list_opts;
+while (my $f = pop @ARGV) {
+	if ($f eq "--") {
+		push @rev_list_opts, "--", @ARGV;
+		@ARGV = ();
+	} elsif (-d $f) {
 		opendir(DH,$f)
 			or die "Failed to opendir $f: $!";
 
@@ -394,11 +400,14 @@ for my $f (@ARGV) {
 	} elsif (-f $f or -p $f) {
 		push @files, $f;
 	} else {
-		my $tempdir = tempdir(CLEANUP => 1);
-		push @files, $repo->command('format-patch', '-o', $tempdir, $f);
+		push @rev_list_opts, $f;
 	}
 }
 
+if (@rev_list_opts) {
+	push @files, $repo->command('format-patch', '-o', tempdir(CLEANUP => 1), @rev_list_opts);
+}
+
 if ($validate) {
 	foreach my $f (@files) {
 		unless (-p $f) {
-- 
1.6.0.3.791.g15769.dirty

  parent reply	other threads:[~2008-10-31 16:53 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-10-31 10:57 git send-email improvements Pierre Habouzit
2008-10-31 10:57 ` [PATCH 1/3] git send-email: avoid leaking directory file descriptors Pierre Habouzit
2008-10-31 10:57   ` [PATCH 2/3] git send-email: interpret unknown files as revision lists Pierre Habouzit
2008-10-31 10:57     ` [PATCH 3/3] git send-email: add --annotate option Pierre Habouzit
2008-10-31 21:34       ` Ian Hilt
2008-11-02  6:23       ` Junio C Hamano
2008-11-02  9:51         ` Pierre Habouzit
2008-11-03 12:18           ` Matthieu Moy
2008-10-31 16:52     ` Pierre Habouzit [this message]
2008-11-02  4:35       ` [PATCH] git send-email: allow any rev-list option as an argument Jeff King
2008-11-02  9:39         ` Pierre Habouzit
2008-11-02 18:02           ` Jeff King
2008-11-03  9:15             ` Pierre Habouzit
2008-11-04  1:04               ` Junio C Hamano
2008-11-04  8:19                 ` Pierre Habouzit
2008-11-02  4:31   ` [PATCH 1/3] git send-email: avoid leaking directory file descriptors Jeff King
2008-10-31 12:36 ` Further enhancement proposal for git-send-email Pierre Habouzit
2008-10-31 12:36   ` [PATCH 1/3] git send-email: make the message file name more specific Pierre Habouzit
2008-10-31 12:36     ` [PATCH 2/3] git send-email: do not ask questions when --compose is used Pierre Habouzit
2008-10-31 12:36       ` [PATCH 3/3] git send-email: turn --compose on when more than one patch Pierre Habouzit
2008-10-31 21:33       ` [PATCH 2/3] git send-email: do not ask questions when --compose is used Ian Hilt
2008-10-31 21:38         ` Pierre Habouzit
2008-10-31 22:01           ` Ian Hilt
2008-11-01  2:26           ` Ian Hilt
2008-11-01 11:04             ` Pierre Habouzit
2008-11-01 13:00               ` Ian Hilt
2008-11-01 17:08                 ` Pierre Habouzit
2008-11-01 17:34                   ` Francis Galiegue
2008-11-01 17:43                     ` Pierre Habouzit
2008-11-01 19:56                       ` Francis Galiegue
2008-11-01 17:54                   ` Ian Hilt
2008-11-02  6:18     ` [PATCH 1/3] git send-email: make the message file name more specific Junio C Hamano
2008-11-02  9:35       ` Pierre Habouzit
2008-11-02 21:34         ` Ian Hilt
2008-11-03  8:53           ` Pierre Habouzit
2008-11-04 16:24 ` [take 2] git send-email updates Pierre Habouzit
2008-11-04 16:24   ` [PATCH 1/5] git send-email: make the message file name more specific Pierre Habouzit
2008-11-04 16:24     ` [PATCH 2/5] git send-email: interpret unknown files as revision lists Pierre Habouzit
2008-11-04 16:24       ` [PATCH 3/5] git send-email: add --annotate option Pierre Habouzit
2008-11-04 16:24         ` [PATCH 4/5] git send-email: ask less questions when --compose is used Pierre Habouzit
2008-11-04 16:24           ` [PATCH 5/5] git send-email: turn --compose on when more than one patch Pierre Habouzit
2008-11-04 23:54             ` Junio C Hamano
2008-11-05  3:31               ` Jeff King
2008-11-05  7:03                 ` Junio C Hamano
2008-11-04 20:09           ` [PATCH 4/5] git send-email: ask less questions when --compose is used Francis Galiegue
2008-11-04 23:54           ` Junio C Hamano
2008-11-04 23:54       ` [PATCH 2/5] git send-email: interpret unknown files as revision lists Junio C Hamano
2008-11-05 10:40         ` Pierre Habouzit
2008-11-05 15:17           ` Junio C Hamano
2008-11-09 18:56           ` Junio C Hamano
2008-11-10 23:53 ` [take 2] git send-email updates Pierre Habouzit
2008-11-10 23:53   ` [PATCH 1/4] git send-email: make the message file name more specific Pierre Habouzit
2008-11-10 23:54     ` [PATCH 2/4] git send-email: interpret unknown files as revision lists Pierre Habouzit
2008-11-10 23:54       ` [PATCH 3/4] git send-email: add --annotate option Pierre Habouzit
2008-11-10 23:54         ` [PATCH 4/4] git send-email: ask less questions when --compose is used Pierre Habouzit
2008-11-12  5:48       ` [PATCH 2/4] git send-email: interpret unknown files as revision lists Junio C Hamano
2008-11-11 20:30   ` [take 2] git send-email updates Junio C Hamano
2008-11-11 22:13     ` Pierre Habouzit
2008-11-12  0:14       ` Junio C Hamano
2008-11-13  0:01         ` Re* " Junio C Hamano
2008-11-15 22:07           ` Pierre Habouzit
2008-11-15 22:05         ` Pierre Habouzit

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=1225471925-2750-1-git-send-email-madcoder@debian.org \
    --to=madcoder@debian.org \
    --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.