Merge branch 'jc/maint-combine-diff-pre-context' into maint

* jc/maint-combine-diff-pre-context:
  diff -c/--cc: do not include uninteresting deletion before leading context
This commit is contained in:
Junio C Hamano 2008-06-25 11:20:01 -07:00
Родитель 41cb0fc100 c86fbe5332
Коммит 4ace4fc584
1 изменённых файлов: 5 добавлений и 2 удалений

Просмотреть файл

@ -84,6 +84,7 @@ struct sline {
/* bit 0 up to (N-1) are on if the parent has this line (i.e. /* bit 0 up to (N-1) are on if the parent has this line (i.e.
* we did not change it). * we did not change it).
* bit N is used for "interesting" lines, including context. * 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 flag;
unsigned long *p_lno; 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 all_mask = (1UL<<num_parent) - 1;
unsigned long mark = (1UL<<num_parent); unsigned long mark = (1UL<<num_parent);
unsigned long no_pre_delete = (2UL<<num_parent);
unsigned long i; unsigned long i;
/* Two groups of interesting lines may have a short gap of /* 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. */ /* Paint a few lines before the first interesting line. */
while (j < i) while (j < i)
sline[j++].flag |= mark; sline[j++].flag |= mark | no_pre_delete;
again: again:
/* we know up to i is to be included. where does the /* 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) int use_color)
{ {
unsigned long mark = (1UL<<num_parent); unsigned long mark = (1UL<<num_parent);
unsigned long no_pre_delete = (2UL<<num_parent);
int i; int i;
unsigned long lno = 0; unsigned long lno = 0;
const char *c_frag = diff_get_color(use_color, DIFF_FRAGINFO); 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; int j;
unsigned long p_mask; unsigned long p_mask;
sl = &sline[lno++]; sl = &sline[lno++];
ll = sl->lost_head; ll = (sl->flag & no_pre_delete) ? NULL : sl->lost_head;
while (ll) { while (ll) {
fputs(c_old, stdout); fputs(c_old, stdout);
for (j = 0; j < num_parent; j++) { for (j = 0; j < num_parent; j++) {