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::
|
rebase.stat::
|
||||||
Whether to show a diffstat of what changed upstream since the last
|
Whether to show a diffstat of what changed upstream since the last
|
||||||
rebase. False by default.
|
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,
|
Push all the refs that would be pushed without this option,
|
||||||
and also push annotated tags in `refs/tags` that are missing
|
and also push annotated tags in `refs/tags` that are missing
|
||||||
from the remote but are pointing at commit-ish that are
|
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::
|
--signed::
|
||||||
GPG-sign the push request to update refs on the receiving
|
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)
|
static int git_push_config(const char *k, const char *v, void *cb)
|
||||||
{
|
{
|
||||||
struct wt_status *s = cb;
|
int *flags = cb;
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
status = git_gpg_config(k, v, NULL);
|
status = git_gpg_config(k, v, NULL);
|
||||||
if (status)
|
if (status)
|
||||||
return 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)
|
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 flags = 0;
|
||||||
int tags = 0;
|
int tags = 0;
|
||||||
int rc;
|
int rc;
|
||||||
int atomic = 0;
|
|
||||||
const char *repo = NULL; /* default repository */
|
const char *repo = NULL; /* default repository */
|
||||||
struct option options[] = {
|
struct option options[] = {
|
||||||
OPT__VERBOSITY(&verbosity),
|
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"),
|
OPT_BIT(0, "follow-tags", &flags, N_("push missing but relevant tags"),
|
||||||
TRANSPORT_PUSH_FOLLOW_TAGS),
|
TRANSPORT_PUSH_FOLLOW_TAGS),
|
||||||
OPT_BIT(0, "signed", &flags, N_("GPG sign the push"), TRANSPORT_PUSH_CERT),
|
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()
|
OPT_END()
|
||||||
};
|
};
|
||||||
|
|
||||||
packet_trace_identity("push");
|
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);
|
argc = parse_options(argc, argv, prefix, options, push_usage, 0);
|
||||||
|
|
||||||
if (deleterefs && (tags || (flags & (TRANSPORT_PUSH_ALL | TRANSPORT_PUSH_MIRROR))))
|
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)
|
if (tags)
|
||||||
add_refspec("refs/tags/*");
|
add_refspec("refs/tags/*");
|
||||||
|
|
||||||
if (atomic)
|
|
||||||
flags |= TRANSPORT_PUSH_ATOMIC;
|
|
||||||
|
|
||||||
if (argc > 0) {
|
if (argc > 0) {
|
||||||
repo = argv[0];
|
repo = argv[0];
|
||||||
set_refspecs(argv + 1, argc - 1, repo);
|
set_refspecs(argv + 1, argc - 1, repo);
|
||||||
|
@ -2186,6 +2186,7 @@ _git_config ()
|
|||||||
pull.octopus
|
pull.octopus
|
||||||
pull.twohead
|
pull.twohead
|
||||||
push.default
|
push.default
|
||||||
|
push.followTags
|
||||||
rebase.autosquash
|
rebase.autosquash
|
||||||
rebase.stat
|
rebase.stat
|
||||||
receive.autogc
|
receive.autogc
|
||||||
|
Loading…
Reference in New Issue
Block a user