Browse Source

send-email: allow send-email to run outside a repo

send-email is supposed to be able to run from outside a repo. This
ability was broken by commits caf0c3d6 (make the message file name more
specific) and 5df9fcf6 (interpret unknown files as revision lists).

This commit provides a fix for both.

Signed-off-by: Jay Soffian <jaysoffian@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Jay Soffian 16 years ago committed by Junio C Hamano
parent
commit
eed6ca7c40
  1. 13
      git-send-email.perl

13
git-send-email.perl

@ -23,7 +23,7 @@ use Getopt::Long;
use Text::ParseWords; use Text::ParseWords;
use Data::Dumper; use Data::Dumper;
use Term::ANSIColor; use Term::ANSIColor;
use File::Temp qw/ tempdir /; use File::Temp qw/ tempdir tempfile /;
use Error qw(:try); use Error qw(:try);
use Git; use Git;


@ -156,7 +156,10 @@ if ($@) {
# Behavior modification variables # Behavior modification variables
my ($quiet, $dry_run) = (0, 0); my ($quiet, $dry_run) = (0, 0);
my $format_patch; my $format_patch;
my $compose_filename = $repo->repo_path() . "/.gitsendemail.msg.$$"; my $compose_filename = ($repo ?
tempfile(".gitsendemail.msg.XXXXXX", DIR => $repo->repo_path()) :
tempfile(".gitsendemail.msg.XXXXXX", DIR => "."))[1];



# Handle interactive edition of files. # Handle interactive edition of files.
my $multiedit; my $multiedit;
@ -267,6 +270,9 @@ unless ($rc) {
usage(); usage();
} }


die "Cannot run git format-patch from outside a repository\n"
if $format_patch and not $repo;

# Now, let's fill any that aren't set in with defaults: # Now, let's fill any that aren't set in with defaults:


sub read_config { sub read_config {
@ -404,6 +410,7 @@ 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 # returns 1 if the conflict must be solved using it as a format-patch argument
sub check_file_rev_conflict($) { sub check_file_rev_conflict($) {
return unless $repo;
my $f = shift; my $f = shift;
try { try {
$repo->command('rev-parse', '--verify', '--quiet', $f); $repo->command('rev-parse', '--verify', '--quiet', $f);
@ -445,6 +452,8 @@ while (defined(my $f = shift @ARGV)) {
} }


if (@rev_list_opts) { if (@rev_list_opts) {
die "Cannot run git format-patch from outside a repository\n"
unless $repo;
push @files, $repo->command('format-patch', '-o', tempdir(CLEANUP => 1), @rev_list_opts); push @files, $repo->command('format-patch', '-o', tempdir(CLEANUP => 1), @rev_list_opts);
} }



Loading…
Cancel
Save