diff --git a/Documentation/git-format-patch.txt b/Documentation/git-format-patch.txt
index 11a7d772618f48b961d41fb5fe1cb269d7ae7cd1..e7ae8cf109003f0dc43c448c40e5fb09a480f912 100644
--- a/Documentation/git-format-patch.txt
+++ b/Documentation/git-format-patch.txt
@@ -10,7 +10,8 @@ SYNOPSIS
--------
[verse]
'git format-patch' [-k] [-o
| --stdout] [--thread]
- [--attach[=] | --inline[=]]
+ [--attach[=] | --inline[=] |
+ [--no-attach]]
[-s | --signoff] []
[-n | --numbered | -N | --no-numbered]
[--start-number ] [--numbered-files]
@@ -117,6 +118,10 @@ include::diff-options.txt[]
which is the commit message and the patch itself in the
second part, with "Content-Disposition: attachment".
+--no-attach::
+ Disable the creation of an attachment, overriding the
+ configuration setting.
+
--inline[=]::
Create multipart/mixed attachment, the first part of
which is the commit message and the patch itself in the
@@ -174,7 +179,8 @@ CONFIGURATION
-------------
You can specify extra mail header lines to be added to each message
in the repository configuration, new defaults for the subject prefix
-and file suffix, and number patches when outputting more than one.
+and file suffix, control attachements, and number patches when outputting
+more than one.
------------
[format]
@@ -183,6 +189,7 @@ and file suffix, and number patches when outputting more than one.
suffix = .txt
numbered = auto
cc =
+ attach [ = mime-boundary-string ]
------------
diff --git a/builtin-log.c b/builtin-log.c
index 2ae39afccdc1978141fe4cc4453befa632ecaadf..8549028817ac1a4add0a224ac2996bcbea9a6455 100644
--- a/builtin-log.c
+++ b/builtin-log.c
@@ -428,6 +428,8 @@ static const char *fmt_patch_suffix = ".patch";
static int numbered = 0;
static int auto_number = 1;
+static char *default_attach = NULL;
+
static char **extra_hdr;
static int extra_hdr_nr;
static int extra_hdr_alloc;
@@ -488,6 +490,14 @@ static int git_format_config(const char *var, const char *value, void *cb)
auto_number = auto_number && numbered;
return 0;
}
+ if (!strcmp(var, "format.attach")) {
+ if (value && *value)
+ default_attach = xstrdup(value);
+ else
+ default_attach = xstrdup(git_version_string);
+ return 0;
+ }
+
return git_log_config(var, value, cb);
}
@@ -787,6 +797,11 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
rev.subject_prefix = fmt_patch_subject_prefix;
+ if (default_attach) {
+ rev.mime_boundary = default_attach;
+ rev.no_inline = 1;
+ }
+
/*
* Parse the arguments before setup_revisions(), or something
* like "git format-patch -o a123 HEAD^.." may fail; a123 is
@@ -849,6 +864,10 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
rev.mime_boundary = argv[i] + 9;
rev.no_inline = 1;
}
+ else if (!strcmp(argv[i], "--no-attach")) {
+ rev.mime_boundary = NULL;
+ rev.no_inline = 0;
+ }
else if (!strcmp(argv[i], "--inline")) {
rev.mime_boundary = git_version_string;
rev.no_inline = 0;