diff options
author | Junio C Hamano <gitster@pobox.com> | 2008-06-22 14:33:56 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-06-22 14:33:56 -0700 |
commit | bc9c3e0b932c5e14de749e07f5045197e7d6cd76 (patch) | |
tree | 93d428b5550b47104251ffbd4d73877b59a602f2 /combine-diff.c | |
parent | 8bcff62baf7a17864620964c60d3a02d7c5b8d77 (diff) | |
parent | c86fbe5332abe6b951731940b9a8676ea90a434c (diff) | |
download | git-bc9c3e0b932c5e14de749e07f5045197e7d6cd76.tar.gz git-bc9c3e0b932c5e14de749e07f5045197e7d6cd76.tar.xz |
Merge branch 'jc/maint-combine-diff-pre-context'
* jc/maint-combine-diff-pre-context:
diff -c/--cc: do not include uninteresting deletion before leading context
Diffstat (limited to 'combine-diff.c')
-rw-r--r-- | combine-diff.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/combine-diff.c b/combine-diff.c index 588c58bc5..9f80a1c5e 100644 --- a/combine-diff.c +++ b/combine-diff.c @@ -84,6 +84,7 @@ struct sline { /* bit 0 up to (N-1) are on if the parent has this line (i.e. * we did not change it). * bit N is used for "interesting" lines, including context. + * bit (N+1) is used for "do not show deletion before this". */ unsigned long flag; unsigned long *p_lno; @@ -308,6 +309,7 @@ static int give_context(struct sline *sline, unsigned long cnt, int num_parent) { unsigned long all_mask = (1UL<<num_parent) - 1; unsigned long mark = (1UL<<num_parent); + unsigned long no_pre_delete = (2UL<<num_parent); unsigned long i; /* Two groups of interesting lines may have a short gap of @@ -329,7 +331,7 @@ static int give_context(struct sline *sline, unsigned long cnt, int num_parent) /* Paint a few lines before the first interesting line. */ while (j < i) - sline[j++].flag |= mark; + sline[j++].flag |= mark | no_pre_delete; again: /* we know up to i is to be included. where does the @@ -502,6 +504,7 @@ static void dump_sline(struct sline *sline, unsigned long cnt, int num_parent, int use_color) { unsigned long mark = (1UL<<num_parent); + unsigned long no_pre_delete = (2UL<<num_parent); int i; unsigned long lno = 0; const char *c_frag = diff_get_color(use_color, DIFF_FRAGINFO); @@ -581,7 +584,7 @@ static void dump_sline(struct sline *sline, unsigned long cnt, int num_parent, int j; unsigned long p_mask; sl = &sline[lno++]; - ll = sl->lost_head; + ll = (sl->flag & no_pre_delete) ? NULL : sl->lost_head; while (ll) { fputs(c_old, stdout); for (j = 0; j < num_parent; j++) { |