From: Junio C Hamano <gitster@pobox.com>
To: Pierre Habouzit <madcoder@debian.org>
Cc: git@vger.kernel.org
Subject: Re* [take 2] git send-email updates
Date: Wed, 12 Nov 2008 16:01:46 -0800 [thread overview]
Message-ID: <7vfxlwlcid.fsf_-_@gitster.siamese.dyndns.org> (raw)
In-Reply-To: <7vk5b9x0kj.fsf@gitster.siamese.dyndns.org> (Junio C. Hamano's message of "Tue, 11 Nov 2008 16:14:20 -0800")
Junio C Hamano <gitster@pobox.com> writes:
> Actually, "send-email --format-patch master..fixes Documentation/" may be
> a useful command to send out only documentation fixes. For such a usage,
> Documentation/ should not be taken as a maildir. If we would want to
> support such usage (and I'd say why not), a token can fall into one (or
> two) of three categories:
>
> - can it be a rev?
>
> - is it a tracked path (either blob or a leading dir)?
>
> - is it a file/dir that is not tracked?
>
> The first two would be format-patch candidate. The last one is the
> traditional mail source. Because the latter two are disjoint set, and
> because it does not matter if you have a tracked file 'master' and a
> branch 'master' in your repo (either will be passed to format-patch
> anyway), the actual disambiguity is reduced, but it still is different
> from what you have in your patch, I suspect.
>
> As to options, how about doing this:
>
> --no-format-patch means never ever run format-patch, behave exactly as
> before;
>
> --format-patch means what you have in your patch. guess and favor
> format-patch parameter when ambiguous;
>
> without either option, guess and favor mbox/maildir but still run
> format-patch if remaining parameters and options need to
> (e.g. "send-email my-cover-letter origin/master..master" will find
> my-cover-letter which is not tracked and take it as mbox, and grab
> patches from commits between origin/master..master, and send all of
> them).
This patch on top of your [2/4] illustrates what I had in mind (it also
removes the "print foo" while at it).
git-send-email.perl | 35 +++++++++++++++++++++++++++++++----
1 files changed, 31 insertions(+), 4 deletions(-)
diff --git c/git-send-email.perl w/git-send-email.perl
index 6f5a613..9aa3500 100755
--- c/git-send-email.perl
+++ w/git-send-email.perl
@@ -152,7 +152,7 @@ if ($@) {
# Behavior modification variables
my ($quiet, $dry_run) = (0, 0);
-my $format_patch;
+my $format_patch = 'unspecified';
my $compose_filename = $repo->repo_path() . "/.gitsendemail.msg.$$";
# Variables with corresponding config settings
@@ -243,6 +243,15 @@ unless ($rc) {
usage();
}
+if ($format_patch && $format_patch eq 'unspecified') {
+ # No --format-patch nor --no-format-patch on the command line
+ $format_patch = 0;
+} elsif (!$format_patch) {
+ $format_patch = undef;
+} else {
+ $format_patch = 1;
+}
+
# Now, let's fill any that aren't set in with defaults:
sub read_config {
@@ -374,11 +383,27 @@ if (@alias_files and $aliasfiletype and defined $parse_alias{$aliasfiletype}) {
# returns 1 if the conflict must be solved using it as a format-patch argument
sub check_file_rev_conflict($) {
my $f = shift;
+
+ if (!defined $format_patch) {
+ # The command line explicitly forbids acting as a wrapper
+ return 0;
+ }
+
+ # If it is a tracked path it can't be tracking the e-mails you
+ # are going to send out to describe the change to this repository.
+ eval {
+ $repo->command(['ls-files', '--error-unmatch', $f],
+ { STDERR => 0 });
+ };
+ if (!$@) {
+ return 1;
+ }
+
+ # Can it be interpreted as a rev?
try {
$repo->command('rev-parse', '--verify', '--quiet', $f);
- if (defined($format_patch)) {
- print "foo\n";
- return $format_patch;
+ if ($format_patch) {
+ return 1;
}
die(<<EOF);
File '$f' exists but it could also be the range of commits
@@ -408,6 +433,8 @@ while (my $f = pop @ARGV) {
closedir(DH);
} elsif ((-f $f or -p $f) and !check_file_rev_conflict($f)) {
push @files, $f;
+ } elsif (!defined $format_patch) {
+ die("--no-format-patch was given but $f is not a valid send-email argument");
} else {
push @rev_list_opts, $f;
}
next prev parent reply other threads:[~2008-11-13 0:03 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 ` [PATCH] git send-email: allow any rev-list option as an argument Pierre Habouzit
2008-11-02 4:35 ` 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 ` Junio C Hamano [this message]
2008-11-15 22:07 ` Re* " 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=7vfxlwlcid.fsf_-_@gitster.siamese.dyndns.org \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=madcoder@debian.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.