diff options
author | Junio C Hamano <junkio@cox.net> | 2006-04-27 11:58:33 -0700 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-04-27 11:58:33 -0700 |
commit | bd4bd2261b3f794ccdadf63a39ced845f853e861 (patch) | |
tree | 063e7c884f3bcc689cc23bbf98c45ea955a53028 | |
parent | 83aa18eade572679319406d6dc12a81599a4d57e (diff) | |
parent | 710158e3ca3f45a30e08a50dadf427fe95311b9c (diff) | |
download | git-bd4bd2261b3f794ccdadf63a39ced845f853e861.tar.gz git-bd4bd2261b3f794ccdadf63a39ced845f853e861.tar.xz |
Merge branch 'jc/diffstat'
* jc/diffstat:
diff --stat: show complete rewrites consistently.
-rw-r--r-- | diff.c | 18 |
1 files changed, 14 insertions, 4 deletions
@@ -485,7 +485,8 @@ static void builtin_diff(const char *name_a, static void builtin_diffstat(const char *name_a, const char *name_b, struct diff_filespec *one, struct diff_filespec *two, - struct diffstat_t *diffstat) + struct diffstat_t *diffstat, + int complete_rewrite) { mmfile_t mf1, mf2; struct diffstat_file *data; @@ -496,7 +497,13 @@ static void builtin_diffstat(const char *name_a, const char *name_b, data->is_unmerged = 1; return; } - + if (complete_rewrite) { + diff_populate_filespec(one, 0); + diff_populate_filespec(two, 0); + data->deleted = count_lines(one->data, one->size); + data->added = count_lines(two->data, two->size); + return; + } if (fill_mmfile(&mf1, one) < 0 || fill_mmfile(&mf2, two) < 0) die("unable to read files to diff"); @@ -1055,10 +1062,11 @@ static void run_diffstat(struct diff_filepair *p, struct diff_options *o, { const char *name; const char *other; + int complete_rewrite = 0; if (DIFF_PAIR_UNMERGED(p)) { /* unmerged */ - builtin_diffstat(p->one->path, NULL, NULL, NULL, diffstat); + builtin_diffstat(p->one->path, NULL, NULL, NULL, diffstat, 0); return; } @@ -1068,7 +1076,9 @@ static void run_diffstat(struct diff_filepair *p, struct diff_options *o, diff_fill_sha1_info(p->one); diff_fill_sha1_info(p->two); - builtin_diffstat(name, other, p->one, p->two, diffstat); + if (p->status == DIFF_STATUS_MODIFIED && p->score) + complete_rewrite = 1; + builtin_diffstat(name, other, p->one, p->two, diffstat, complete_rewrite); } void diff_setup(struct diff_options *options) |