diff options
author | Junio C Hamano <gitster@pobox.com> | 2016-01-26 15:40:30 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2016-01-26 15:40:30 -0800 |
commit | b2ed5ae80a1b45ac00c4c891e693ffcde34a9347 (patch) | |
tree | c71994f5b195a1c0d6e709e912fdce63b5c47b4e | |
parent | c7dd1c5818111a86deffde1190b57d07efbeed0a (diff) | |
parent | bc6bf2d7641d6c2450b347d5a0b2f954728bf4d9 (diff) | |
download | git-b2ed5ae80a1b45ac00c4c891e693ffcde34a9347.tar.gz git-b2ed5ae80a1b45ac00c4c891e693ffcde34a9347.tar.xz |
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
-rw-r--r-- | Documentation/config.txt | 4 | ||||
-rw-r--r-- | Documentation/git-format-patch.txt | 6 | ||||
-rw-r--r-- | builtin/log.c | 6 | ||||
-rwxr-xr-x | t/t4014-format-patch.sh | 15 |
4 files changed, 30 insertions, 1 deletions
diff --git a/Documentation/config.txt b/Documentation/config.txt index 0f710ca3c..877cbc875 100644 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@ -1245,6 +1245,10 @@ format.coverLetter:: 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. +format.outputDirectory:: + Set a custom directory to store the resulting files instead of the + current working directory. + filter.<driver>.clean:: The command which is used to convert the content of a worktree file to a blob upon checkin. See linkgit:gitattributes[5] for diff --git a/Documentation/git-format-patch.txt b/Documentation/git-format-patch.txt index b149e0906..6821441d7 100644 --- a/Documentation/git-format-patch.txt +++ b/Documentation/git-format-patch.txt @@ -57,7 +57,11 @@ The names of the output files are printed to standard output, unless the `--stdout` option is specified. 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 the concatenation of lines from the commit message up to the first blank diff --git a/builtin/log.c b/builtin/log.c index e00cea75c..0d738d6dd 100644 --- a/builtin/log.c +++ b/builtin/log.c @@ -699,6 +699,7 @@ static int do_signoff; static const char *signature = git_version_string; static const char *signature_file; static int config_cover_letter; +static const char *config_output_directory; enum { 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; return 0; } + if (!strcmp(var, "format.outputdirectory")) + return git_config_string(&config_output_directory, var, value); 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) init_display_notes(&rev.notes_opt); + if (!output_directory && !use_stdout) + output_directory = config_output_directory; + if (!use_stdout) output_directory = set_outdir(prefix, output_directory); else diff --git a/t/t4014-format-patch.sh b/t/t4014-format-patch.sh index 646c4750e..3b99434e3 100755 --- a/t/t4014-format-patch.sh +++ b/t/t4014-format-patch.sh @@ -1445,4 +1445,19 @@ test_expect_success 'From line has expected format' ' 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 |