]> git.ipfire.org Git - thirdparty/git.git/commitdiff
xdiff-interface: refactor parsing of merge.conflictstyle
authorPhillip Wood <phillip.wood@dunelm.org.uk>
Thu, 14 Mar 2024 17:05:03 +0000 (17:05 +0000)
committerJunio C Hamano <gitster@pobox.com>
Thu, 14 Mar 2024 17:08:52 +0000 (10:08 -0700)
Factor out the code that parses of conflict style name so it can be
reused in a later commit that wants to parse the name given on the
command line.

Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
xdiff-interface.c
xdiff-interface.h

index 3162f517434353609e1fa45ab67ea3cf4623f8a3..16ed8ac492856f141165296d523a319dfd1b4108 100644 (file)
@@ -305,6 +305,22 @@ int xdiff_compare_lines(const char *l1, long s1,
        return xdl_recmatch(l1, s1, l2, s2, flags);
 }
 
+int parse_conflict_style_name(const char *value)
+{
+       if (!strcmp(value, "diff3"))
+               return XDL_MERGE_DIFF3;
+       else if (!strcmp(value, "zdiff3"))
+               return XDL_MERGE_ZEALOUS_DIFF3;
+       else if (!strcmp(value, "merge"))
+               return 0;
+       /*
+        * Please update _git_checkout() in git-completion.bash when
+        * you add new merge config
+        */
+       else
+               return -1;
+}
+
 int git_xmerge_style = -1;
 
 int git_xmerge_config(const char *var, const char *value,
@@ -313,17 +329,8 @@ int git_xmerge_config(const char *var, const char *value,
        if (!strcmp(var, "merge.conflictstyle")) {
                if (!value)
                        return config_error_nonbool(var);
-               if (!strcmp(value, "diff3"))
-                       git_xmerge_style = XDL_MERGE_DIFF3;
-               else if (!strcmp(value, "zdiff3"))
-                       git_xmerge_style = XDL_MERGE_ZEALOUS_DIFF3;
-               else if (!strcmp(value, "merge"))
-                       git_xmerge_style = 0;
-               /*
-                * Please update _git_checkout() in
-                * git-completion.bash when you add new merge config
-                */
-               else
+               git_xmerge_style = parse_conflict_style_name(value);
+               if (git_xmerge_style == -1)
                        return error(_("unknown style '%s' given for '%s'"),
                                     value, var);
                return 0;
index e6f80df04627ccfe1b3777fe380ef3aa5188769e..38537169b729528daffb42dc33a2be9cd62b7b7c 100644 (file)
@@ -51,6 +51,7 @@ int buffer_is_binary(const char *ptr, unsigned long size);
 void xdiff_set_find_func(xdemitconf_t *xecfg, const char *line, int cflags);
 void xdiff_clear_find_func(xdemitconf_t *xecfg);
 struct config_context;
+int parse_conflict_style_name(const char *value);
 int git_xmerge_config(const char *var, const char *value,
                      const struct config_context *ctx, void *cb);
 extern int git_xmerge_style;