diff options
author | Junio C Hamano <gitster@pobox.com> | 2010-04-17 23:40:45 +0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-04-17 23:40:45 +0400 |
commit | f3bd6ab7ea7b35ca5f26f106eb00a00f257716d7 (patch) | |
tree | 91956e5a6a412502376f1d54009c9d23e213074a /combine-diff.c | |
parent | f02dd06e26ed9f6f6f265791cfc7bfb48babf3b5 (diff) | |
parent | 53b3c47d64b4294ae586d1daa04f9140dadd9ae6 (diff) |
Merge branch 'maint'
* maint:
t1010-mktree: Adjust expected result to code and documentation
combined diff: correctly handle truncated file
Document new "already-merged" rule for branch -d
Diffstat (limited to 'combine-diff.c')
-rw-r--r-- | combine-diff.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/combine-diff.c b/combine-diff.c index 61626912e3..3480dae824 100644 --- a/combine-diff.c +++ b/combine-diff.c @@ -204,7 +204,7 @@ static void consume_line(void *state_, char *line, unsigned long len) static void combine_diff(const unsigned char *parent, unsigned int mode, mmfile_t *result_file, struct sline *sline, unsigned int cnt, int n, - int num_parent) + int num_parent, int result_deleted) { unsigned int p_lno, lno; unsigned long nmask = (1UL << n); @@ -215,7 +215,7 @@ static void combine_diff(const unsigned char *parent, unsigned int mode, struct combine_diff_state state; unsigned long sz; - if (!cnt) + if (result_deleted) return; /* result deleted */ parent_file.ptr = grab_blob(parent, mode, &sz); @@ -517,7 +517,7 @@ static void show_line_to_eol(const char *line, int len, const char *reset) } static void dump_sline(struct sline *sline, unsigned long cnt, int num_parent, - int use_color) + int use_color, int result_deleted) { unsigned long mark = (1UL<<num_parent); unsigned long no_pre_delete = (2UL<<num_parent); @@ -530,7 +530,7 @@ static void dump_sline(struct sline *sline, unsigned long cnt, int num_parent, const char *c_plain = diff_get_color(use_color, DIFF_PLAIN); const char *c_reset = diff_get_color(use_color, DIFF_RESET); - if (!cnt) + if (result_deleted) return; /* result deleted */ while (1) { @@ -687,6 +687,7 @@ static void show_patch_diff(struct combine_diff_path *elem, int num_parent, { struct diff_options *opt = &rev->diffopt; unsigned long result_size, cnt, lno; + int result_deleted = 0; char *result, *cp; struct sline *sline; /* survived lines */ int mode_differs = 0; @@ -767,6 +768,7 @@ static void show_patch_diff(struct combine_diff_path *elem, int num_parent, } else { deleted_file: + result_deleted = 1; result_size = 0; elem->mode = 0; result = xcalloc(1, 1); @@ -823,7 +825,7 @@ static void show_patch_diff(struct combine_diff_path *elem, int num_parent, combine_diff(elem->parent[i].sha1, elem->parent[i].mode, &result_file, sline, - cnt, i, num_parent); + cnt, i, num_parent, result_deleted); if (elem->parent[i].mode != elem->mode) mode_differs = 1; } @@ -889,7 +891,7 @@ static void show_patch_diff(struct combine_diff_path *elem, int num_parent, dump_quoted_path("+++ ", b_prefix, elem->path, c_meta, c_reset); dump_sline(sline, cnt, num_parent, - DIFF_OPT_TST(opt, COLOR_DIFF)); + DIFF_OPT_TST(opt, COLOR_DIFF), result_deleted); } free(result); |