Merge branch 'ak/format-patch-odir-config'
"git format-patch" learned to notice format.outputDirectory configuration variable. This allows "-o <dir>" option to be omitted on the command line if you always use the same directory in your workflow. * ak/format-patch-odir-config: format-patch: introduce format.outputDirectory configuration
This commit is contained in:
commit
b2ed5ae80a
@ -1245,6 +1245,10 @@ format.coverLetter::
|
|||||||
format-patch is invoked, but in addition can be set to "auto", to
|
format-patch is invoked, but in addition can be set to "auto", to
|
||||||
generate a cover-letter only when there's more than one patch.
|
generate a cover-letter only when there's more than one patch.
|
||||||
|
|
||||||
|
format.outputDirectory::
|
||||||
|
Set a custom directory to store the resulting files instead of the
|
||||||
|
current working directory.
|
||||||
|
|
||||||
filter.<driver>.clean::
|
filter.<driver>.clean::
|
||||||
The command which is used to convert the content of a worktree
|
The command which is used to convert the content of a worktree
|
||||||
file to a blob upon checkin. See linkgit:gitattributes[5] for
|
file to a blob upon checkin. See linkgit:gitattributes[5] for
|
||||||
|
@ -57,7 +57,11 @@ The names of the output files are printed to standard
|
|||||||
output, unless the `--stdout` option is specified.
|
output, unless the `--stdout` option is specified.
|
||||||
|
|
||||||
If `-o` is specified, output files are created in <dir>. Otherwise
|
If `-o` is specified, output files are created in <dir>. Otherwise
|
||||||
they are created in the current working directory.
|
they are created in the current working directory. The default path
|
||||||
|
can be set with the 'format.outputDirectory' configuration option.
|
||||||
|
The `-o` option takes precedence over `format.outputDirectory`.
|
||||||
|
To store patches in the current working directory even when
|
||||||
|
`format.outputDirectory` points elsewhere, use `-o .`.
|
||||||
|
|
||||||
By default, the subject of a single patch is "[PATCH] " followed by
|
By default, the subject of a single patch is "[PATCH] " followed by
|
||||||
the concatenation of lines from the commit message up to the first blank
|
the concatenation of lines from the commit message up to the first blank
|
||||||
|
@ -699,6 +699,7 @@ static int do_signoff;
|
|||||||
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;
|
||||||
|
static const char *config_output_directory;
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
COVER_UNSET,
|
COVER_UNSET,
|
||||||
@ -777,6 +778,8 @@ static int git_format_config(const char *var, const char *value, void *cb)
|
|||||||
config_cover_letter = git_config_bool(var, value) ? COVER_ON : COVER_OFF;
|
config_cover_letter = git_config_bool(var, value) ? COVER_ON : COVER_OFF;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
if (!strcmp(var, "format.outputdirectory"))
|
||||||
|
return git_config_string(&config_output_directory, var, value);
|
||||||
|
|
||||||
return git_log_config(var, value, cb);
|
return git_log_config(var, value, cb);
|
||||||
}
|
}
|
||||||
@ -1391,6 +1394,9 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
|
|||||||
if (rev.show_notes)
|
if (rev.show_notes)
|
||||||
init_display_notes(&rev.notes_opt);
|
init_display_notes(&rev.notes_opt);
|
||||||
|
|
||||||
|
if (!output_directory && !use_stdout)
|
||||||
|
output_directory = config_output_directory;
|
||||||
|
|
||||||
if (!use_stdout)
|
if (!use_stdout)
|
||||||
output_directory = set_outdir(prefix, output_directory);
|
output_directory = set_outdir(prefix, output_directory);
|
||||||
else
|
else
|
||||||
|
@ -1445,4 +1445,19 @@ test_expect_success 'From line has expected format' '
|
|||||||
test_cmp from filtered
|
test_cmp from filtered
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'format-patch format.outputDirectory option' '
|
||||||
|
test_config format.outputDirectory patches &&
|
||||||
|
rm -fr patches &&
|
||||||
|
git format-patch master..side &&
|
||||||
|
test $(git rev-list master..side | wc -l) -eq $(ls patches | wc -l)
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'format-patch -o overrides format.outputDirectory' '
|
||||||
|
test_config format.outputDirectory patches &&
|
||||||
|
rm -fr patches patchset &&
|
||||||
|
git format-patch master..side -o patchset &&
|
||||||
|
test_path_is_missing patches &&
|
||||||
|
test_path_is_dir patchset
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
Loading…
Reference in New Issue
Block a user