{"thread":{"id":"32174","subject":"[PATCH] diff: Fixes shortstat number of files","startedAt":"2012-11-23T07:33:19Z","lastAt":"2012-11-23T07:33:19Z","messageCount":1,"participants":["Antoine Pelisse"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"203687","messageId":"1353655999-9529-1-git-send-email-apelisse@gmail.com","threadId":"32174","inReplyTo":null,"subject":"[PATCH] diff: Fixes shortstat number of files","fromName":"Antoine Pelisse","fromEmail":"apelisse@gmail.com","sentAt":"2012-11-23T07:33:19Z","receivedAt":"2012-11-23T07:33:19Z","isPatch":true,"sender":{"key":"apelisse@gmail.com","avatar":"https://avatars.githubusercontent.com/u/1929644?v=4"},"body":"There is a discrepancy between the last line of `git diff --stat`\nand `git diff --shortstat` in case of a merge.\nThe unmerged files are actually counted twice, thus doubling the\nvalue of \"file changed\".\n\nIn fact, while stat decrements number of files when seeing an unmerged\nfile, shortstat doesn't.\n\nSigned-off-by: Antoine Pelisse <apelisse@gmail.com>\n---\n diff.c |    5 ++---\n 1 file changed, 2 insertions(+), 3 deletions(-)\n\ndiff --git a/diff.c b/diff.c\nindex e89a201..5c6bcbd 100644\n--- a/diff.c\n+++ b/diff.c\n@@ -1704,9 +1704,8 @@ static void show_shortstats(struct diffstat_t *data, struct diff_options *option\n \t\tint added = data->files[i]->added;\n \t\tint deleted= data->files[i]->deleted;\n \n-\t\tif (data->files[i]->is_unmerged)\n-\t\t\tcontinue;\n-\t\tif (!data->files[i]->is_renamed && (added + deleted == 0)) {\n+\t\tif (data->files[i]->is_unmerged ||\n+\t\t  (!data->files[i]->is_renamed && (added + deleted == 0))) {\n \t\t\ttotal_files--;\n \t\t} else if (!data->files[i]->is_binary) { /* don't count bytes */\n \t\t\tadds += added;\n-- \n1.7.9.5\n"}]}