---
Documentation/git-push.txt | 3 +++
builtin/push.c | 9 ++++++++-
2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/Documentation/git-push.txt b/Documentation/git-push.txt
index 3e76e99f3..e1036feaf 100644
--- a/Documentation/git-push.txt
+++ b/Documentation/git-push.txt
@@ -161,6 +161,9 @@ already exists on the remote side.
Transmit the given string to the server, which passes them to
the pre-receive as well as the post-receive hook. The given string
must not contain a NUL or LF character.
+ Can be configured using "git config push.optionDefault <option-string>".
+ After configured git push will always be executed silently
+ with --push-options <options configured>.
--receive-pack=<git-receive-pack>::
--exec=<git-receive-pack>::
diff --git a/builtin/push.c b/builtin/push.c
index 2ac810422..ae3efafce 100644
--- a/builtin/push.c
+++ b/builtin/push.c
@@ -467,11 +467,18 @@ static int git_push_config(const char *k, const char *v,
void *cb)
{
int *flags = cb;
int status;
+ struct string_list push_options = STRING_LIST_INIT_DUP;
status = git_gpg_config(k, v, NULL);
if (status)
return status;
+ const struct string_list *optionsDefault =
git_config_get_value_multi("push.optionDefault");
+ for (int i = 0; i < optionsDefault->nr; i++) {
+ string_list_insert(&push_options,
optionsDefault->items[i].string);
+ }
+
+
if (!strcmp(k, "push.followtags")) {
if (git_config_bool(k, v))
*flags |= TRANSPORT_PUSH_FOLLOW_TAGS;
@@ -515,7 +522,7 @@ int cmd_push(int argc, const char **argv, const char
*prefix)
int push_cert = -1;
int rc;
const char *repo = NULL; /* default repository */
- struct string_list push_options = STRING_LIST_INIT_DUP;
+ static struct string_list push_options = STRING_LIST_INIT_DUP;
const struct string_list_item *item;
struct option options[] = {
--
2.15.0.rc0.39.g2f0e14e.dirty