Skip to content

Commit ad79c02

Browse files
flichtenheldgitster
authored andcommitted
send-email: Don't require to be called in a repository
We might not have some configuration variables available, but if the user doesn't care about that, neither should we. Still use the repository if it is available, though. Signed-off-by: Frank Lichtenheld <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 4461792 commit ad79c02

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

git-send-email.perl

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,8 @@ sub format_2822_time {
168168
# Example reply to:
169169
#$initial_reply_to = ''; #<[email protected]>';
170170

171-
my $repo = Git->repository();
171+
my $repo = eval { Git->repository() };
172+
my @repo = $repo ? ($repo) : ();
172173
my $term = eval {
173174
$ENV{"GIT_SEND_EMAIL_NOTTY"}
174175
? new Term::ReadLine 'git-send-email', \*STDIN, \*STDOUT
@@ -271,25 +272,25 @@ sub read_config {
271272

272273
foreach my $setting (keys %config_bool_settings) {
273274
my $target = $config_bool_settings{$setting}->[0];
274-
$$target = $repo->config_bool("$prefix.$setting") unless (defined $$target);
275+
$$target = Git::config_bool(@repo, "$prefix.$setting") unless (defined $$target);
275276
}
276277

277278
foreach my $setting (keys %config_settings) {
278279
my $target = $config_settings{$setting};
279280
if (ref($target) eq "ARRAY") {
280281
unless (@$target) {
281-
my @values = $repo->config("$prefix.$setting");
282+
my @values = Git::config(@repo, "$prefix.$setting");
282283
@$target = @values if (@values && defined $values[0]);
283284
}
284285
}
285286
else {
286-
$$target = $repo->config("$prefix.$setting") unless (defined $$target);
287+
$$target = Git::config(@repo, "$prefix.$setting") unless (defined $$target);
287288
}
288289
}
289290
}
290291

291292
# read configuration from [sendemail "$identity"], fall back on [sendemail]
292-
$identity = $repo->config("sendemail.identity") unless (defined $identity);
293+
$identity = Git::config(@repo, "sendemail.identity") unless (defined $identity);
293294
read_config("sendemail.$identity") if (defined $identity);
294295
read_config("sendemail");
295296

@@ -327,8 +328,9 @@ sub read_config {
327328
}
328329
}
329330

330-
my ($repoauthor) = $repo->ident_person('author');
331-
my ($repocommitter) = $repo->ident_person('committer');
331+
my ($repoauthor, $repocommitter);
332+
($repoauthor) = Git::ident_person(@repo, 'author');
333+
($repocommitter) = Git::ident_person(@repo, 'committer');
332334

333335
# Verify the user input
334336

@@ -415,7 +417,7 @@ sub read_config {
415417

416418
my $prompting = 0;
417419
if (!defined $sender) {
418-
$sender = $repoauthor || $repocommitter;
420+
$sender = $repoauthor || $repocommitter || '';
419421

420422
while (1) {
421423
$_ = $term->readline("Who should the emails appear to be from? [$sender] ");
@@ -509,7 +511,7 @@ sub expand_aliases {
509511
EOT
510512
close(C);
511513

512-
my $editor = $ENV{GIT_EDITOR} || $repo->config("core.editor") || $ENV{VISUAL} || $ENV{EDITOR} || "vi";
514+
my $editor = $ENV{GIT_EDITOR} || Git::config(@repo, "core.editor") || $ENV{VISUAL} || $ENV{EDITOR} || "vi";
513515
system('sh', '-c', '$0 $@', $editor, $compose_filename);
514516

515517
open(C2,">",$compose_filename . ".final")

0 commit comments

Comments
 (0)