When you show an object, it should be shown with the EOLs which the repo is configured for, and not how it's stored internally in the object store. Signed-off-by: Marius Storm-Olsen <marius@xxxxxxxxxxxxx> --- builtin-log.c | 19 ++++++++++++++----- t/t6033-merge-crlf.sh | 6 +++--- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/builtin-log.c b/builtin-log.c index 9817d6f..94367f6 100644 --- a/builtin-log.c +++ b/builtin-log.c @@ -287,8 +287,8 @@ static void show_tagger(char *buf, int len, struct rev_info *rev) show_date(date, tz, rev->date_mode)); } -static int show_object(const unsigned char *sha1, int show_tag_object, - struct rev_info *rev) +static int show_object(const unsigned char *sha1, const char *name, + int show_tag_object, struct rev_info *rev) { unsigned long size; enum object_type type; @@ -309,8 +309,17 @@ static int show_object(const unsigned char *sha1, int show_tag_object, offset = new_offset; } - if (offset < size) + if (offset < size) { + struct strbuf strbuf; + strbuf_init(&strbuf, 0); + if (convert_to_working_tree(name, buf + offset, size - offset, &strbuf)) { + free(buf); + offset = 0; + size = strbuf.len; + buf = strbuf_detach(&strbuf, NULL); + } fwrite(buf + offset, size - offset, 1, stdout); + } free(buf); return 0; } @@ -350,7 +359,7 @@ int cmd_show(int argc, const char **argv, const char *prefix) const char *name = objects[i].name; switch (o->type) { case OBJ_BLOB: - ret = show_object(o->sha1, 0, NULL); + ret = show_object(o->sha1, name, 0, NULL); break; case OBJ_TAG: { struct tag *t = (struct tag *)o; @@ -359,7 +368,7 @@ int cmd_show(int argc, const char **argv, const char *prefix) diff_get_color_opt(&rev.diffopt, DIFF_COMMIT), t->tag, diff_get_color_opt(&rev.diffopt, DIFF_RESET)); - ret = show_object(o->sha1, 1, &rev); + ret = show_object(o->sha1, name, 1, &rev); objects[i].item = (struct object *)t->tagged; i--; break; diff --git a/t/t6033-merge-crlf.sh b/t/t6033-merge-crlf.sh index f161b40..d1d1dcb 100755 --- a/t/t6033-merge-crlf.sh +++ b/t/t6033-merge-crlf.sh @@ -49,19 +49,19 @@ test_expect_success 'Check that conflict file is CRLF' ' test_cmp file file.temp ' -test_expect_failure 'Check that staged file :1: is CRLF' ' +test_expect_success 'Check that staged file :1: is CRLF' ' git show :1:file >staged.temp1 && git show :1:file | remove_cr | append_cr >staged.temp2 && test_cmp staged.temp1 staged.temp2 ' -test_expect_failure 'Check that staged file :2: is CRLF' ' +test_expect_success 'Check that staged file :2: is CRLF' ' git show :2:file >staged.temp1 && git show :2:file | remove_cr | append_cr >staged.temp2 && test_cmp staged.temp1 staged.temp2 ' -test_expect_failure 'Check that staged file :3: is CRLF' ' +test_expect_success 'Check that staged file :3: is CRLF' ' git show :3:file >staged.temp1 && git show :3:file | remove_cr | append_cr >staged.temp2 && test_cmp staged.temp1 staged.temp2 -- 1.5.6.rc2.158.g3478 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html