[PATCH v3 3/3] Don't expand CRLFs when normalizing text during merge
From: Eyvind Bernhardsen <hidden>
Date: 2016-06-15 22:49:00
Subsystem:
the rest · Maintainer:
Linus Torvalds
There's no need to expand CRLFs when convert_to_working_tree() is called to normalize text for a merge since the text will be converted back immediately. Improves performance of merges with conflicting line endings when core.eol=crlf or core.autocrlf=true. Signed-off-by: Eyvind Bernhardsen <redacted> --- convert.c | 22 +++++++++++++++------- 1 files changed, 15 insertions(+), 7 deletions(-)
diff --git a/convert.c b/convert.c
index e1561a9..d45d490 100644
--- a/convert.c
+++ b/convert.c@@ -739,7 +739,9 @@ int convert_to_git(const char *path, const char *src, size_t len, return ret | ident_to_git(path, src, len, dst, ident); } -int convert_to_working_tree(const char *path, const char *src, size_t len, struct strbuf *dst) +static int convert_to_working_tree_internal(const char *path, const char *src, + size_t len, struct strbuf *dst, + int normalizing) { struct git_attr_check check[5]; enum action action = CRLF_GUESS;
@@ -765,17 +767,23 @@ int convert_to_working_tree(const char *path, const char *src, size_t len, struc src = dst->buf; len = dst->len; } - action = determine_action(action, eol_attr); - ret |= crlf_to_worktree(path, src, len, dst, action); - if (ret) { - src = dst->buf; - len = dst->len; + if (!normalizing) { + action = determine_action(action, eol_attr); + ret |= crlf_to_worktree(path, src, len, dst, action); + if (ret) { + src = dst->buf; + len = dst->len; + } } return ret | apply_filter(path, src, len, dst, filter); } +int convert_to_working_tree(const char *path, const char *src, size_t len, struct strbuf *dst) { + return convert_to_working_tree_internal(path, src, len, dst, 0); +} + int renormalize_buffer(const char *path, const char *src, size_t len, struct strbuf *dst) { - int ret = convert_to_working_tree(path, src, len, dst); + int ret = convert_to_working_tree_internal(path, src, len, dst, 1); if (ret) { src = dst->buf; len = dst->len;
--
1.7.1.575.g383de