combine-diff: fix placement of deletion.
authorJunio C Hamano <junkio@cox.net>
Thu, 2 Feb 2006 13:21:14 +0000 (05:21 -0800)
committerJunio C Hamano <junkio@cox.net>
Thu, 2 Feb 2006 13:21:14 +0000 (05:21 -0800)
The code misplaced a raw hunk that consists of solely deleted
lines by one line.  This showed e.g. Len's 12-way octopus
(9fdb62af in the linux-2.6), kernel/power/disk.c, hunk starting
at line 95, incorrectly.

Signed-off-by: Junio C Hamano <junkio@cox.net>
combine-diff.c

index 8f295c8..36363bd 100644 (file)
@@ -235,7 +235,10 @@ static void combine_diff(const unsigned char *parent, const char *ourtmp,
                                 */
                                nb = 1;
                        }
-                       lost_bucket = &sline[nb-1]; /* sline is 0 based */
+                       if (nn == 0)
+                               lost_bucket = &sline[nb];
+                       else
+                               lost_bucket = &sline[nb-1];
                        continue;
                }
                if (!lost_bucket)
@@ -627,6 +630,15 @@ int show_combined_diff(struct combine_diff_path *elem, int num_parent,
                else
                        printf("%s", elem->path);
                putchar('\n');
+               printf("index ");
+               for (i = 0; i < num_parent; i++) {
+                       printf("%s%s",
+                              i ? ".." : "",
+                              find_unique_abbrev(elem->parent_sha1[i],
+                                                 DEFAULT_ABBREV));
+               }
+               printf("->%s\n",
+                      find_unique_abbrev(elem->sha1, DEFAULT_ABBREV));
                dump_sline(sline, cnt, num_parent);
        }
        if (ourtmp == ourtmp_buf)