diff options
author | Jay Soffian <jaysoffian@gmail.com> | 2009-02-14 23:32:13 -0500 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2009-02-14 21:48:37 -0800 |
commit | eed6ca7c402cb51ff6cfd3ecf1f1cac788579b5d (patch) | |
tree | e9ff620f642894d0732724a4f8c22ef2041fbc40 /git-send-email.perl | |
parent | e9cc02f0e41fd5d2f51e3c3f2b4f8cfa9e434432 (diff) | |
download | git-eed6ca7c402cb51ff6cfd3ecf1f1cac788579b5d.tar.gz git-eed6ca7c402cb51ff6cfd3ecf1f1cac788579b5d.tar.xz |
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>
Diffstat (limited to 'git-send-email.perl')
-rwxr-xr-x | git-send-email.perl | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/git-send-email.perl b/git-send-email.perl index 77ca8fe88..9dad10092 100755 --- a/git-send-email.perl +++ b/git-send-email.perl @@ -23,7 +23,7 @@ use Getopt::Long; use Text::ParseWords; use Data::Dumper; use Term::ANSIColor; -use File::Temp qw/ tempdir /; +use File::Temp qw/ tempdir tempfile /; use Error qw(:try); use Git; @@ -156,7 +156,10 @@ if ($@) { # Behavior modification variables my ($quiet, $dry_run) = (0, 0); 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. my $multiedit; @@ -267,6 +270,9 @@ unless ($rc) { 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: 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 sub check_file_rev_conflict($) { + return unless $repo; my $f = shift; try { $repo->command('rev-parse', '--verify', '--quiet', $f); @@ -445,6 +452,8 @@ while (defined(my $f = shift @ARGV)) { } 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); } |