Merge branch 'jk/push-config'
Restructure "git push" codepath to make it easier to add new configuration bits and then add push.followTags configuration that turns --follow-tags option on by default. * jk/push-config: push: allow --follow-tags to be set by config push.followTags cmd_push: pass "flags" pointer to config callback cmd_push: set "atomic" bit directly git_push_config: drop cargo-culted wt_status pointer
This commit is contained in:
commit
61ca378275
@ -2111,6 +2111,12 @@ new default).
|
||||
|
||||
--
|
||||
|
||||
push.followTags::
|
||||
If set to true enable '--follow-tags' option by default. You
|
||||
may override this configuration at time of push by specifying
|
||||
'--no-follow-tags'.
|
||||
|
||||
|
||||
rebase.stat::
|
||||
Whether to show a diffstat of what changed upstream since the last
|
||||
rebase. False by default.
|
||||
|
@ -128,7 +128,10 @@ already exists on the remote side.
|
||||
Push all the refs that would be pushed without this option,
|
||||
and also push annotated tags in `refs/tags` that are missing
|
||||
from the remote but are pointing at commit-ish that are
|
||||
reachable from the refs being pushed.
|
||||
reachable from the refs being pushed. This can also be specified
|
||||
with configuration variable 'push.followTags'. For more
|
||||
information, see 'push.followTags' in linkgit:git-config[1].
|
||||
|
||||
|
||||
--signed::
|
||||
GPG-sign the push request to update refs on the receiving
|
||||
|
@ -473,13 +473,22 @@ static int option_parse_recurse_submodules(const struct option *opt,
|
||||
|
||||
static int git_push_config(const char *k, const char *v, void *cb)
|
||||
{
|
||||
struct wt_status *s = cb;
|
||||
int *flags = cb;
|
||||
int status;
|
||||
|
||||
status = git_gpg_config(k, v, NULL);
|
||||
if (status)
|
||||
return status;
|
||||
return git_default_config(k, v, s);
|
||||
|
||||
if (!strcmp(k, "push.followtags")) {
|
||||
if (git_config_bool(k, v))
|
||||
*flags |= TRANSPORT_PUSH_FOLLOW_TAGS;
|
||||
else
|
||||
*flags &= ~TRANSPORT_PUSH_FOLLOW_TAGS;
|
||||
return 0;
|
||||
}
|
||||
|
||||
return git_default_config(k, v, NULL);
|
||||
}
|
||||
|
||||
int cmd_push(int argc, const char **argv, const char *prefix)
|
||||
@ -487,7 +496,6 @@ int cmd_push(int argc, const char **argv, const char *prefix)
|
||||
int flags = 0;
|
||||
int tags = 0;
|
||||
int rc;
|
||||
int atomic = 0;
|
||||
const char *repo = NULL; /* default repository */
|
||||
struct option options[] = {
|
||||
OPT__VERBOSITY(&verbosity),
|
||||
@ -519,12 +527,12 @@ int cmd_push(int argc, const char **argv, const char *prefix)
|
||||
OPT_BIT(0, "follow-tags", &flags, N_("push missing but relevant tags"),
|
||||
TRANSPORT_PUSH_FOLLOW_TAGS),
|
||||
OPT_BIT(0, "signed", &flags, N_("GPG sign the push"), TRANSPORT_PUSH_CERT),
|
||||
OPT_BOOL(0, "atomic", &atomic, N_("request atomic transaction on remote side")),
|
||||
OPT_BIT(0, "atomic", &flags, N_("request atomic transaction on remote side"), TRANSPORT_PUSH_ATOMIC),
|
||||
OPT_END()
|
||||
};
|
||||
|
||||
packet_trace_identity("push");
|
||||
git_config(git_push_config, NULL);
|
||||
git_config(git_push_config, &flags);
|
||||
argc = parse_options(argc, argv, prefix, options, push_usage, 0);
|
||||
|
||||
if (deleterefs && (tags || (flags & (TRANSPORT_PUSH_ALL | TRANSPORT_PUSH_MIRROR))))
|
||||
@ -535,9 +543,6 @@ int cmd_push(int argc, const char **argv, const char *prefix)
|
||||
if (tags)
|
||||
add_refspec("refs/tags/*");
|
||||
|
||||
if (atomic)
|
||||
flags |= TRANSPORT_PUSH_ATOMIC;
|
||||
|
||||
if (argc > 0) {
|
||||
repo = argv[0];
|
||||
set_refspecs(argv + 1, argc - 1, repo);
|
||||
|
@ -2186,6 +2186,7 @@ _git_config ()
|
||||
pull.octopus
|
||||
pull.twohead
|
||||
push.default
|
||||
push.followTags
|
||||
rebase.autosquash
|
||||
rebase.stat
|
||||
receive.autogc
|
||||
|
Loading…
Reference in New Issue
Block a user