Merge branch 'ma/parse-maybe-bool'
Code clean-up. * ma/parse-maybe-bool: parse_decoration_style: drop unused argument `var` treewide: deprecate git_config_maybe_bool, use git_parse_maybe_bool config: make git_{config,parse}_maybe_bool equivalent config: introduce git_parse_maybe_bool_text t5334: document that git push --signed=1 does not work Doc/git-{push,send-pack}: correct --sign= to --signed=
This commit is contained in:
commit
bdfcdefd2f
@ -12,7 +12,7 @@ SYNOPSIS
|
|||||||
'git push' [--all | --mirror | --tags] [--follow-tags] [--atomic] [-n | --dry-run] [--receive-pack=<git-receive-pack>]
|
'git push' [--all | --mirror | --tags] [--follow-tags] [--atomic] [-n | --dry-run] [--receive-pack=<git-receive-pack>]
|
||||||
[--repo=<repository>] [-f | --force] [-d | --delete] [--prune] [-v | --verbose]
|
[--repo=<repository>] [-f | --force] [-d | --delete] [--prune] [-v | --verbose]
|
||||||
[-u | --set-upstream] [--push-option=<string>]
|
[-u | --set-upstream] [--push-option=<string>]
|
||||||
[--[no-]signed|--sign=(true|false|if-asked)]
|
[--[no-]signed|--signed=(true|false|if-asked)]
|
||||||
[--force-with-lease[=<refname>[:<expect>]]]
|
[--force-with-lease[=<refname>[:<expect>]]]
|
||||||
[--no-verify] [<repository> [<refspec>...]]
|
[--no-verify] [<repository> [<refspec>...]]
|
||||||
|
|
||||||
@ -141,7 +141,7 @@ already exists on the remote side.
|
|||||||
information, see `push.followTags` in linkgit:git-config[1].
|
information, see `push.followTags` in linkgit:git-config[1].
|
||||||
|
|
||||||
--[no-]signed::
|
--[no-]signed::
|
||||||
--sign=(true|false|if-asked)::
|
--signed=(true|false|if-asked)::
|
||||||
GPG-sign the push request to update refs on the receiving
|
GPG-sign the push request to update refs on the receiving
|
||||||
side, to allow it to be checked by the hooks and/or be
|
side, to allow it to be checked by the hooks and/or be
|
||||||
logged. If `false` or `--no-signed`, no signing will be
|
logged. If `false` or `--no-signed`, no signing will be
|
||||||
|
@ -11,7 +11,7 @@ SYNOPSIS
|
|||||||
[verse]
|
[verse]
|
||||||
'git send-pack' [--all] [--dry-run] [--force] [--receive-pack=<git-receive-pack>]
|
'git send-pack' [--all] [--dry-run] [--force] [--receive-pack=<git-receive-pack>]
|
||||||
[--verbose] [--thin] [--atomic]
|
[--verbose] [--thin] [--atomic]
|
||||||
[--[no-]signed|--sign=(true|false|if-asked)]
|
[--[no-]signed|--signed=(true|false|if-asked)]
|
||||||
[<host>:]<directory> [<ref>...]
|
[<host>:]<directory> [<ref>...]
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
@ -71,7 +71,7 @@ be in a separate packet, and the list must end with a flush packet.
|
|||||||
refs.
|
refs.
|
||||||
|
|
||||||
--[no-]signed::
|
--[no-]signed::
|
||||||
--sign=(true|false|if-asked)::
|
--signed=(true|false|if-asked)::
|
||||||
GPG-sign the push request to update refs on the receiving
|
GPG-sign the push request to update refs on the receiving
|
||||||
side, to allow it to be checked by the hooks and/or be
|
side, to allow it to be checked by the hooks and/or be
|
||||||
logged. If `false` or `--no-signed`, no signing will be
|
logged. If `false` or `--no-signed`, no signing will be
|
||||||
|
@ -187,6 +187,10 @@ Same as `git_config_bool`, except that integers are returned as-is, and
|
|||||||
an `is_bool` flag is unset.
|
an `is_bool` flag is unset.
|
||||||
|
|
||||||
`git_config_maybe_bool`::
|
`git_config_maybe_bool`::
|
||||||
|
Deprecated. Use `git_parse_maybe_bool` instead. They are exactly the
|
||||||
|
same, except this function takes an unused argument `name`.
|
||||||
|
|
||||||
|
`git_parse_maybe_bool`::
|
||||||
Same as `git_config_bool`, except that it returns -1 on error rather
|
Same as `git_config_bool`, except that it returns -1 on error rather
|
||||||
than dying.
|
than dying.
|
||||||
|
|
||||||
|
@ -58,9 +58,9 @@ static int auto_decoration_style(void)
|
|||||||
return (isatty(1) || pager_in_use()) ? DECORATE_SHORT_REFS : 0;
|
return (isatty(1) || pager_in_use()) ? DECORATE_SHORT_REFS : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int parse_decoration_style(const char *var, const char *value)
|
static int parse_decoration_style(const char *value)
|
||||||
{
|
{
|
||||||
switch (git_config_maybe_bool(var, value)) {
|
switch (git_parse_maybe_bool(value)) {
|
||||||
case 1:
|
case 1:
|
||||||
return DECORATE_SHORT_REFS;
|
return DECORATE_SHORT_REFS;
|
||||||
case 0:
|
case 0:
|
||||||
@ -82,7 +82,7 @@ static int decorate_callback(const struct option *opt, const char *arg, int unse
|
|||||||
if (unset)
|
if (unset)
|
||||||
decoration_style = 0;
|
decoration_style = 0;
|
||||||
else if (arg)
|
else if (arg)
|
||||||
decoration_style = parse_decoration_style("command line", arg);
|
decoration_style = parse_decoration_style(arg);
|
||||||
else
|
else
|
||||||
decoration_style = DECORATE_SHORT_REFS;
|
decoration_style = DECORATE_SHORT_REFS;
|
||||||
|
|
||||||
@ -412,7 +412,7 @@ static int git_log_config(const char *var, const char *value, void *cb)
|
|||||||
if (!strcmp(var, "log.date"))
|
if (!strcmp(var, "log.date"))
|
||||||
return git_config_string(&default_date_mode, var, value);
|
return git_config_string(&default_date_mode, var, value);
|
||||||
if (!strcmp(var, "log.decorate")) {
|
if (!strcmp(var, "log.decorate")) {
|
||||||
decoration_style = parse_decoration_style(var, value);
|
decoration_style = parse_decoration_style(value);
|
||||||
if (decoration_style < 0)
|
if (decoration_style < 0)
|
||||||
decoration_style = 0; /* maybe warn? */
|
decoration_style = 0; /* maybe warn? */
|
||||||
return 0;
|
return 0;
|
||||||
@ -824,7 +824,7 @@ static int git_format_config(const char *var, const char *value, void *cb)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (!strcmp(var, "format.from")) {
|
if (!strcmp(var, "format.from")) {
|
||||||
int b = git_config_maybe_bool(var, value);
|
int b = git_parse_maybe_bool(value);
|
||||||
free(from);
|
free(from);
|
||||||
if (b < 0)
|
if (b < 0)
|
||||||
from = xstrdup(value);
|
from = xstrdup(value);
|
||||||
|
@ -566,7 +566,7 @@ static int git_merge_config(const char *k, const char *v, void *cb)
|
|||||||
else if (!strcmp(k, "merge.renormalize"))
|
else if (!strcmp(k, "merge.renormalize"))
|
||||||
option_renormalize = git_config_bool(k, v);
|
option_renormalize = git_config_bool(k, v);
|
||||||
else if (!strcmp(k, "merge.ff")) {
|
else if (!strcmp(k, "merge.ff")) {
|
||||||
int boolval = git_config_maybe_bool(k, v);
|
int boolval = git_parse_maybe_bool(v);
|
||||||
if (0 <= boolval) {
|
if (0 <= boolval) {
|
||||||
fast_forward = boolval ? FF_ALLOW : FF_NO;
|
fast_forward = boolval ? FF_ALLOW : FF_NO;
|
||||||
} else if (v && !strcmp(v, "only")) {
|
} else if (v && !strcmp(v, "only")) {
|
||||||
@ -940,7 +940,7 @@ static int default_edit_option(void)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (e) {
|
if (e) {
|
||||||
int v = git_config_maybe_bool(name, e);
|
int v = git_parse_maybe_bool(e);
|
||||||
if (v < 0)
|
if (v < 0)
|
||||||
die(_("Bad value '%s' in environment '%s'"), e, name);
|
die(_("Bad value '%s' in environment '%s'"), e, name);
|
||||||
return v;
|
return v;
|
||||||
|
@ -39,7 +39,7 @@ enum rebase_type {
|
|||||||
static enum rebase_type parse_config_rebase(const char *key, const char *value,
|
static enum rebase_type parse_config_rebase(const char *key, const char *value,
|
||||||
int fatal)
|
int fatal)
|
||||||
{
|
{
|
||||||
int v = git_config_maybe_bool("pull.rebase", value);
|
int v = git_parse_maybe_bool(value);
|
||||||
|
|
||||||
if (!v)
|
if (!v)
|
||||||
return REBASE_FALSE;
|
return REBASE_FALSE;
|
||||||
@ -274,7 +274,7 @@ static const char *config_get_ff(void)
|
|||||||
if (git_config_get_value("pull.ff", &value))
|
if (git_config_get_value("pull.ff", &value))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
switch (git_config_maybe_bool("pull.ff", value)) {
|
switch (git_parse_maybe_bool(value)) {
|
||||||
case 0:
|
case 0:
|
||||||
return "--no-ff";
|
return "--no-ff";
|
||||||
case 1:
|
case 1:
|
||||||
|
@ -481,7 +481,7 @@ static int git_push_config(const char *k, const char *v, void *cb)
|
|||||||
} else if (!strcmp(k, "push.gpgsign")) {
|
} else if (!strcmp(k, "push.gpgsign")) {
|
||||||
const char *value;
|
const char *value;
|
||||||
if (!git_config_get_value("push.gpgsign", &value)) {
|
if (!git_config_get_value("push.gpgsign", &value)) {
|
||||||
switch (git_config_maybe_bool("push.gpgsign", value)) {
|
switch (git_parse_maybe_bool(value)) {
|
||||||
case 0:
|
case 0:
|
||||||
set_push_cert_flags(flags, SEND_PACK_PUSH_CERT_NEVER);
|
set_push_cert_flags(flags, SEND_PACK_PUSH_CERT_NEVER);
|
||||||
break;
|
break;
|
||||||
|
@ -301,7 +301,7 @@ static int config_read_branches(const char *key, const char *value, void *cb)
|
|||||||
}
|
}
|
||||||
string_list_append(&info->merge, xstrdup(value));
|
string_list_append(&info->merge, xstrdup(value));
|
||||||
} else {
|
} else {
|
||||||
int v = git_config_maybe_bool(orig_key, value);
|
int v = git_parse_maybe_bool(value);
|
||||||
if (v >= 0)
|
if (v >= 0)
|
||||||
info->rebase = v;
|
info->rebase = v;
|
||||||
else if (!strcmp(value, "preserve"))
|
else if (!strcmp(value, "preserve"))
|
||||||
|
@ -105,7 +105,7 @@ static int send_pack_config(const char *k, const char *v, void *cb)
|
|||||||
if (!strcmp(k, "push.gpgsign")) {
|
if (!strcmp(k, "push.gpgsign")) {
|
||||||
const char *value;
|
const char *value;
|
||||||
if (!git_config_get_value("push.gpgsign", &value)) {
|
if (!git_config_get_value("push.gpgsign", &value)) {
|
||||||
switch (git_config_maybe_bool("push.gpgsign", value)) {
|
switch (git_parse_maybe_bool(value)) {
|
||||||
case 0:
|
case 0:
|
||||||
args.push_cert = SEND_PACK_PUSH_CERT_NEVER;
|
args.push_cert = SEND_PACK_PUSH_CERT_NEVER;
|
||||||
break;
|
break;
|
||||||
|
15
config.c
15
config.c
@ -929,7 +929,7 @@ ssize_t git_config_ssize_t(const char *name, const char *value)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int git_parse_maybe_bool(const char *value)
|
static int git_parse_maybe_bool_text(const char *value)
|
||||||
{
|
{
|
||||||
if (!value)
|
if (!value)
|
||||||
return 1;
|
return 1;
|
||||||
@ -946,9 +946,9 @@ int git_parse_maybe_bool(const char *value)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int git_config_maybe_bool(const char *name, const char *value)
|
int git_parse_maybe_bool(const char *value)
|
||||||
{
|
{
|
||||||
int v = git_parse_maybe_bool(value);
|
int v = git_parse_maybe_bool_text(value);
|
||||||
if (0 <= v)
|
if (0 <= v)
|
||||||
return v;
|
return v;
|
||||||
if (git_parse_int(value, &v))
|
if (git_parse_int(value, &v))
|
||||||
@ -956,9 +956,14 @@ int git_config_maybe_bool(const char *name, const char *value)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int git_config_maybe_bool(const char *name, const char *value)
|
||||||
|
{
|
||||||
|
return git_parse_maybe_bool(value);
|
||||||
|
}
|
||||||
|
|
||||||
int git_config_bool_or_int(const char *name, const char *value, int *is_bool)
|
int git_config_bool_or_int(const char *name, const char *value, int *is_bool)
|
||||||
{
|
{
|
||||||
int v = git_parse_maybe_bool(value);
|
int v = git_parse_maybe_bool_text(value);
|
||||||
if (0 <= v) {
|
if (0 <= v) {
|
||||||
*is_bool = 1;
|
*is_bool = 1;
|
||||||
return v;
|
return v;
|
||||||
@ -1852,7 +1857,7 @@ int git_configset_get_maybe_bool(struct config_set *cs, const char *key, int *de
|
|||||||
{
|
{
|
||||||
const char *value;
|
const char *value;
|
||||||
if (!git_configset_get_value(cs, key, &value)) {
|
if (!git_configset_get_value(cs, key, &value)) {
|
||||||
*dest = git_config_maybe_bool(key, value);
|
*dest = git_parse_maybe_bool(value);
|
||||||
if (*dest == -1)
|
if (*dest == -1)
|
||||||
return -1;
|
return -1;
|
||||||
return 0;
|
return 0;
|
||||||
|
2
pager.c
2
pager.c
@ -194,7 +194,7 @@ static int pager_command_config(const char *var, const char *value, void *vdata)
|
|||||||
const char *cmd;
|
const char *cmd;
|
||||||
|
|
||||||
if (skip_prefix(var, "pager.", &cmd) && !strcmp(cmd, data->cmd)) {
|
if (skip_prefix(var, "pager.", &cmd) && !strcmp(cmd, data->cmd)) {
|
||||||
int b = git_config_maybe_bool(var, value);
|
int b = git_parse_maybe_bool(value);
|
||||||
if (b >= 0)
|
if (b >= 0)
|
||||||
data->want = b;
|
data->want = b;
|
||||||
else {
|
else {
|
||||||
|
@ -238,7 +238,7 @@ static struct submodule *lookup_or_create_by_name(struct submodule_cache *cache,
|
|||||||
static int parse_fetch_recurse(const char *opt, const char *arg,
|
static int parse_fetch_recurse(const char *opt, const char *arg,
|
||||||
int die_on_error)
|
int die_on_error)
|
||||||
{
|
{
|
||||||
switch (git_config_maybe_bool(opt, arg)) {
|
switch (git_parse_maybe_bool(arg)) {
|
||||||
case 1:
|
case 1:
|
||||||
return RECURSE_SUBMODULES_ON;
|
return RECURSE_SUBMODULES_ON;
|
||||||
case 0:
|
case 0:
|
||||||
@ -291,7 +291,7 @@ int option_fetch_parse_recurse_submodules(const struct option *opt,
|
|||||||
static int parse_update_recurse(const char *opt, const char *arg,
|
static int parse_update_recurse(const char *opt, const char *arg,
|
||||||
int die_on_error)
|
int die_on_error)
|
||||||
{
|
{
|
||||||
switch (git_config_maybe_bool(opt, arg)) {
|
switch (git_parse_maybe_bool(arg)) {
|
||||||
case 1:
|
case 1:
|
||||||
return RECURSE_SUBMODULES_ON;
|
return RECURSE_SUBMODULES_ON;
|
||||||
case 0:
|
case 0:
|
||||||
@ -311,7 +311,7 @@ int parse_update_recurse_submodules_arg(const char *opt, const char *arg)
|
|||||||
static int parse_push_recurse(const char *opt, const char *arg,
|
static int parse_push_recurse(const char *opt, const char *arg,
|
||||||
int die_on_error)
|
int die_on_error)
|
||||||
{
|
{
|
||||||
switch (git_config_maybe_bool(opt, arg)) {
|
switch (git_parse_maybe_bool(arg)) {
|
||||||
case 1:
|
case 1:
|
||||||
/* There's no simple "on" value when pushing */
|
/* There's no simple "on" value when pushing */
|
||||||
if (die_on_error)
|
if (die_on_error)
|
||||||
|
@ -71,6 +71,13 @@ test_expect_success 'push --signed fails with a receiver without push certificat
|
|||||||
test_i18ngrep "the receiving end does not support" err
|
test_i18ngrep "the receiving end does not support" err
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'push --signed=1 is accepted' '
|
||||||
|
prepare_dst &&
|
||||||
|
mkdir -p dst/.git/hooks &&
|
||||||
|
test_must_fail git push --signed=1 dst noop ff +noff 2>err &&
|
||||||
|
test_i18ngrep "the receiving end does not support" err
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success GPG 'no certificate for a signed push with no update' '
|
test_expect_success GPG 'no certificate for a signed push with no update' '
|
||||||
prepare_dst &&
|
prepare_dst &&
|
||||||
mkdir -p dst/.git/hooks &&
|
mkdir -p dst/.git/hooks &&
|
||||||
|
Loading…
Reference in New Issue
Block a user