Merge branch 'jt/format-patch-from-config'

"git format-patch" learned format.from configuration variable to
specify the default settings for its "--from" option.

* jt/format-patch-from-config:
  format-patch: format.from gives the default for --from
This commit is contained in:
Junio C Hamano 2016-08-10 12:33:18 -07:00
commit db40a62239
4 changed files with 63 additions and 1 deletions

View File

@ -1253,6 +1253,16 @@ format.attach::
value as the boundary. See the --attach option in value as the boundary. See the --attach option in
linkgit:git-format-patch[1]. linkgit:git-format-patch[1].
format.from::
Provides the default value for the `--from` option to format-patch.
Accepts a boolean value, or a name and email address. If false,
format-patch defaults to `--no-from`, using commit authors directly in
the "From:" field of patch mails. If true, format-patch defaults to
`--from`, using your committer identity in the "From:" field of patch
mails and including a "From:" field in the body of the patch mail if
different. If set to a non-boolean value, format-patch uses that
value instead of your committer identity. Defaults to false.
format.numbered:: format.numbered::
A boolean which can enable or disable sequence numbers in patch A boolean which can enable or disable sequence numbers in patch
subjects. It defaults to "auto" which enables it only if there subjects. It defaults to "auto" which enables it only if there

View File

@ -719,6 +719,7 @@ static void add_header(const char *value)
static int thread; static int thread;
static int do_signoff; static int do_signoff;
static int base_auto; static int base_auto;
static char *from;
static const char *signature = git_version_string; static const char *signature = git_version_string;
static const char *signature_file; static const char *signature_file;
static int config_cover_letter; static int config_cover_letter;
@ -807,6 +808,17 @@ static int git_format_config(const char *var, const char *value, void *cb)
base_auto = git_config_bool(var, value); base_auto = git_config_bool(var, value);
return 0; return 0;
} }
if (!strcmp(var, "format.from")) {
int b = git_config_maybe_bool(var, value);
free(from);
if (b < 0)
from = xstrdup(value);
else if (b)
from = xstrdup(git_committer_info(IDENT_NO_DATE));
else
from = NULL;
return 0;
}
return git_log_config(var, value, cb); return git_log_config(var, value, cb);
} }
@ -1384,7 +1396,6 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
int quiet = 0; int quiet = 0;
int reroll_count = -1; int reroll_count = -1;
char *branch_name = NULL; char *branch_name = NULL;
char *from = NULL;
char *base_commit = NULL; char *base_commit = NULL;
struct base_tree_info bases; struct base_tree_info bases;

View File

@ -2182,6 +2182,7 @@ _git_config ()
format.attach format.attach
format.cc format.cc
format.coverLetter format.coverLetter
format.from
format.headers format.headers
format.numbered format.numbered
format.pretty format.pretty

View File

@ -229,6 +229,46 @@ check_patch () {
grep -e "^Subject:" "$1" grep -e "^Subject:" "$1"
} }
test_expect_success 'format.from=false' '
git -c format.from=false format-patch --stdout master..side |
sed -e "/^\$/q" >patch &&
check_patch patch &&
! grep "^From: C O Mitter <committer@example.com>\$" patch
'
test_expect_success 'format.from=true' '
git -c format.from=true format-patch --stdout master..side |
sed -e "/^\$/q" >patch &&
check_patch patch &&
grep "^From: C O Mitter <committer@example.com>\$" patch
'
test_expect_success 'format.from with address' '
git -c format.from="F R Om <from@example.com>" format-patch --stdout master..side |
sed -e "/^\$/q" >patch &&
check_patch patch &&
grep "^From: F R Om <from@example.com>\$" patch
'
test_expect_success '--no-from overrides format.from' '
git -c format.from="F R Om <from@example.com>" format-patch --no-from --stdout master..side |
sed -e "/^\$/q" >patch &&
check_patch patch &&
! grep "^From: F R Om <from@example.com>\$" patch
'
test_expect_success '--from overrides format.from' '
git -c format.from="F R Om <from@example.com>" format-patch --from --stdout master..side |
sed -e "/^\$/q" >patch &&
check_patch patch &&
! grep "^From: F R Om <from@example.com>\$" patch
'
test_expect_success '--no-to overrides config.to' ' test_expect_success '--no-to overrides config.to' '
git config --replace-all format.to \ git config --replace-all format.to \