summaryrefslogtreecommitdiff
path: root/ll-merge.c
diff options
context:
space:
mode:
Diffstat (limited to 'll-merge.c')
-rw-r--r--ll-merge.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/ll-merge.c b/ll-merge.c
index 5b8d46aede..d65a8971db 100644
--- a/ll-merge.c
+++ b/ll-merge.c
@@ -32,6 +32,20 @@ struct ll_merge_driver {
char *cmdline;
};
+static struct attr_check *merge_attributes;
+static struct attr_check *load_merge_attributes(void)
+{
+ if (!merge_attributes)
+ merge_attributes = attr_check_initl("merge", "conflict-marker-size", NULL);
+ return merge_attributes;
+}
+
+void reset_merge_attributes(void)
+{
+ attr_check_free(merge_attributes);
+ merge_attributes = NULL;
+}
+
/*
* Built-in low-levels
*/
@@ -354,7 +368,7 @@ int ll_merge(mmbuffer_t *result_buf,
struct index_state *istate,
const struct ll_merge_options *opts)
{
- static struct attr_check *check;
+ struct attr_check *check = load_merge_attributes();
static const struct ll_merge_options default_opts;
const char *ll_driver_name = NULL;
int marker_size = DEFAULT_CONFLICT_MARKER_SIZE;
@@ -369,9 +383,6 @@ int ll_merge(mmbuffer_t *result_buf,
normalize_file(theirs, path, istate);
}
- if (!check)
- check = attr_check_initl("merge", "conflict-marker-size", NULL);
-
git_check_attr(istate, path, check);
ll_driver_name = check->items[0].value;
if (check->items[1].value) {