pull --rebase/remote rename: document and honor single-letter abbreviations rebase types
When 46af44b07d
(pull --rebase=<type>: allow single-letter abbreviations
for the type, 2018-08-04) landed in Git, it had the side effect that
not only 'pull --rebase=<type>' accepted the single-letter abbreviations
but also the 'pull.rebase' and 'branch.<name>.rebase' configurations.
However, 'git remote rename' did not honor these single-letter
abbreviations when reading the 'branch.*.rebase' configurations.
We now document the single-letter abbreviations and both code places
share a common function to parse the values of 'git pull --rebase=*',
'pull.rebase', and 'branches.*.rebase'.
The only functional change is the handling of the `branch_info::rebase`
value. Before it was an unsigned enum, thus the truth value could be
checked with `branch_info::rebase != 0`. But `enum rebase_type` is
signed, thus the truth value must now be checked with
`branch_info::rebase >= REBASE_TRUE`
Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
145d59f482
commit
88f8576eda
@ -15,6 +15,7 @@
|
||||
#include "sha1-array.h"
|
||||
#include "remote.h"
|
||||
#include "dir.h"
|
||||
#include "rebase.h"
|
||||
#include "refs.h"
|
||||
#include "refspec.h"
|
||||
#include "revision.h"
|
||||
@ -26,15 +27,6 @@
|
||||
#include "commit-reach.h"
|
||||
#include "sequencer.h"
|
||||
|
||||
enum rebase_type {
|
||||
REBASE_INVALID = -1,
|
||||
REBASE_FALSE = 0,
|
||||
REBASE_TRUE,
|
||||
REBASE_PRESERVE,
|
||||
REBASE_MERGES,
|
||||
REBASE_INTERACTIVE
|
||||
};
|
||||
|
||||
/**
|
||||
* Parses the value of --rebase. If value is a false value, returns
|
||||
* REBASE_FALSE. If value is a true value, returns REBASE_TRUE. If value is
|
||||
@ -45,22 +37,9 @@ enum rebase_type {
|
||||
static enum rebase_type parse_config_rebase(const char *key, const char *value,
|
||||
int fatal)
|
||||
{
|
||||
int v = git_parse_maybe_bool(value);
|
||||
|
||||
if (!v)
|
||||
return REBASE_FALSE;
|
||||
else if (v > 0)
|
||||
return REBASE_TRUE;
|
||||
else if (!strcmp(value, "preserve") || !strcmp(value, "p"))
|
||||
return REBASE_PRESERVE;
|
||||
else if (!strcmp(value, "merges") || !strcmp(value, "m"))
|
||||
return REBASE_MERGES;
|
||||
else if (!strcmp(value, "interactive") || !strcmp(value, "i"))
|
||||
return REBASE_INTERACTIVE;
|
||||
/*
|
||||
* Please update _git_config() in git-completion.bash when you
|
||||
* add new rebase modes.
|
||||
*/
|
||||
enum rebase_type v = rebase_parse_value(value);
|
||||
if (v != REBASE_INVALID)
|
||||
return v;
|
||||
|
||||
if (fatal)
|
||||
die(_("Invalid value for %s: %s"), key, value);
|
||||
|
Reference in New Issue
Block a user