rerere: honor conflict-marker-size attribute
authorJunio C Hamano <gitster@pobox.com>
Sun, 17 Jan 2010 07:28:46 +0000 (23:28 -0800)
committerJunio C Hamano <gitster@pobox.com>
Sun, 17 Jan 2010 10:01:43 +0000 (02:01 -0800)
Signed-off-by: Junio C Hamano <gitster@pobox.com>
ll-merge.c
ll-merge.h
rerere.c
index d6820714d5d4aef940243b7748c2df794a51f567..0dcaae0dd166205e6d17a523789b4b82e5a01f18 100644 (file)
@@ -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;
+}
index 5388422d091ede134d42406291989c49553f7428..ff5d84a345848ff34e068c6fad617f2df5633745 100644 (file)
@@ -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
index 5f332cb25c240d9a26ec48bd3daa36ae1ced9d7c..b988b467fa06d109d8164bccf213a362e87fb1d4 100644 (file)
--- 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