Skip to content

Commit

Permalink
xdiff-interface: refactor parsing of merge.conflictstyle
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
phillipwood authored and gitster committed Mar 14, 2024
1 parent 3c2a3fd commit 7457014
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 11 deletions.
29 changes: 18 additions & 11 deletions xdiff-interface.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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;
Expand Down
1 change: 1 addition & 0 deletions xdiff-interface.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit 7457014

Please sign in to comment.