mirror of
https://github.com/git/git.git
synced 2024-11-24 10:26:17 +08:00
diff-files --stat: do not dump core with unmerged index.
Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
1cd95087c3
commit
cbdda02404
21
diff.c
21
diff.c
@ -202,6 +202,8 @@ struct diffstat_t {
|
||||
int alloc;
|
||||
struct diffstat_file {
|
||||
char *name;
|
||||
unsigned is_unmerged:1;
|
||||
unsigned is_binary:1;
|
||||
unsigned int added, deleted;
|
||||
} **files;
|
||||
};
|
||||
@ -248,6 +250,8 @@ static void show_stats(struct diffstat_t* data)
|
||||
for (i = 0; i < data->nr; i++) {
|
||||
struct diffstat_file *file = data->files[i];
|
||||
|
||||
if (file->is_binary || file->is_unmerged)
|
||||
continue;
|
||||
if (max_change < file->added + file->deleted)
|
||||
max_change = file->added + file->deleted;
|
||||
len = strlen(file->name);
|
||||
@ -292,11 +296,15 @@ static void show_stats(struct diffstat_t* data)
|
||||
if (max + len > 70)
|
||||
max = 70 - len;
|
||||
|
||||
if (added < 0) {
|
||||
/* binary file */
|
||||
if (data->files[i]->is_binary) {
|
||||
printf(" %s%-*s | Bin\n", prefix, len, name);
|
||||
goto free_diffstat_file;
|
||||
} else if (added + deleted == 0) {
|
||||
}
|
||||
else if (data->files[i]->is_unmerged) {
|
||||
printf(" %s%-*s | Unmerged\n", prefix, len, name);
|
||||
goto free_diffstat_file;
|
||||
}
|
||||
else if (added + deleted == 0) {
|
||||
total_files--;
|
||||
goto free_diffstat_file;
|
||||
}
|
||||
@ -424,11 +432,16 @@ static void builtin_diffstat(const char *name_a, const char *name_b,
|
||||
|
||||
data = diffstat_add(diffstat, name_a ? name_a : name_b);
|
||||
|
||||
if (!one || !two) {
|
||||
data->is_unmerged = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
if (fill_mmfile(&mf1, one) < 0 || fill_mmfile(&mf2, two) < 0)
|
||||
die("unable to read files to diff");
|
||||
|
||||
if (mmfile_is_binary(&mf1) || mmfile_is_binary(&mf2))
|
||||
data->added = -1;
|
||||
data->is_binary = 1;
|
||||
else {
|
||||
/* Crazy xdl interfaces.. */
|
||||
xpparam_t xpp;
|
||||
|
Loading…
Reference in New Issue
Block a user