From: Junio C Hamano Date: Sun, 17 Jan 2010 07:28:46 +0000 (-0800) Subject: rerere: honor conflict-marker-size attribute X-Git-Tag: v1.7.0-rc0~53^2 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=8588567c96490b8d236b1bc13f9bcb0dfa118efe;p=git.git rerere: honor conflict-marker-size attribute Signed-off-by: Junio C Hamano --- diff --git a/ll-merge.c b/ll-merge.c index d6820714d..0dcaae0dd 100644 --- a/ll-merge.c +++ b/ll-merge.c @@ -380,3 +380,18 @@ int ll_merge(mmbuffer_t *result_buf, ours, our_label, theirs, their_label, virtual_ancestor, marker_size); } + +int ll_merge_marker_size(const char *path) +{ + static struct git_attr_check check; + int marker_size = DEFAULT_CONFLICT_MARKER_SIZE; + + if (!check.attr) + check.attr = git_attr("conflict-marker-size"); + if (!git_checkattr(path, 1, &check) && check.value) { + marker_size = atoi(check.value); + if (marker_size <= 0) + marker_size = DEFAULT_CONFLICT_MARKER_SIZE; + } + return marker_size; +} diff --git a/ll-merge.h b/ll-merge.h index 5388422d0..ff5d84a34 100644 --- a/ll-merge.h +++ b/ll-merge.h @@ -12,4 +12,6 @@ int ll_merge(mmbuffer_t *result_buf, mmfile_t *theirs, const char *their_label, int virtual_ancestor); +int ll_merge_marker_size(const char *path); + #endif diff --git a/rerere.c b/rerere.c index 5f332cb25..b988b467f 100644 --- a/rerere.c +++ b/rerere.c @@ -5,6 +5,7 @@ #include "dir.h" #include "resolve-undo.h" #include "ll-merge.h" +#include "attr.h" /* if rerere_enabled == -1, fall back to detection of .git/rr-cache */ static int rerere_enabled = -1; @@ -221,7 +222,7 @@ static int handle_file(const char *path, unsigned char *sha1, const char *output { int hunk_no = 0; struct rerere_io_file io; - int marker_size = 7; + int marker_size = ll_merge_marker_size(path); memset(&io, 0, sizeof(io)); io.io.getline = rerere_file_getline; @@ -288,7 +289,7 @@ static int handle_cache(const char *path, unsigned char *sha1, const char *outpu struct cache_entry *ce; int pos, len, i, hunk_no; struct rerere_io_mem io; - int marker_size = 7; + int marker_size = ll_merge_marker_size(path); /* * Reproduce the conflicted merge in-core