aboutsummaryrefslogtreecommitdiff
path: root/rebase.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2020-02-25 11:18:32 -0800
committerJunio C Hamano <gitster@pobox.com>2020-02-25 11:18:32 -0800
commitd0038f4b31d6ab1f0602a4d3c19e35c5004175fa (patch)
tree2b67cde99b211b34335e838515690896794c6d75 /rebase.c
parent51ebf55b9309824346a6589c9f3b130c6f371b8f (diff)
parentb3fd6cbf29435f8b49a0a5d9f86236e00b084624 (diff)
downloadgit-d0038f4b31d6ab1f0602a4d3c19e35c5004175fa.tar.xz
Merge branch 'bw/remote-rename-update-config'
"git remote rename X Y" needs to adjust configuration variables (e.g. branch.<name>.remote) whose value used to be X to Y. branch.<name>.pushRemote is now also updated. * bw/remote-rename-update-config: remote rename/remove: gently handle remote.pushDefault config config: provide access to the current line number remote rename/remove: handle branch.<name>.pushRemote config values remote: clean-up config callback remote: clean-up by returning early to avoid one indentation pull --rebase/remote rename: document and honor single-letter abbreviations rebase types
Diffstat (limited to 'rebase.c')
-rw-r--r--rebase.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/rebase.c b/rebase.c
new file mode 100644
index 0000000000..f8137d859b
--- /dev/null
+++ b/rebase.c
@@ -0,0 +1,35 @@
+#include "rebase.h"
+#include "config.h"
+
+/*
+ * Parses textual value for pull.rebase, branch.<name>.rebase, etc.
+ * Unrecognised value yields REBASE_INVALID, which traditionally is
+ * treated the same way as REBASE_FALSE.
+ *
+ * The callers that care if (any) rebase is requested should say
+ * if (REBASE_TRUE <= rebase_parse_value(string))
+ *
+ * The callers that want to differenciate an unrecognised value and
+ * false can do so by treating _INVALID and _FALSE differently.
+ */
+enum rebase_type rebase_parse_value(const char *value)
+{
+ 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.
+ */
+
+ return REBASE_INVALID;
+}