Skip to content

Commit

Permalink
Use correct grammar in diffstat summary line
Browse files Browse the repository at this point in the history
"git diff --stat" and "git apply --stat" now learn to print the line
"%d files changed, %d insertions(+), %d deletions(-)" in singular form
whenever applicable. "0 insertions" and "0 deletions" are also omitted
unless they are both zero.

This matches how versions of "diffstat" that are not prehistoric produced
their output, and also makes this line translatable.

[jc: with help from Thomas Dickey in archaeology of "diffstat"]
[jc: squashed Jonathan's updates to illustrations in tutorials and a test]

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Nguyễn Thái Ngọc Duy authored and Junio C Hamano committed Feb 4, 2012
1 parent 828ea97 commit 7f81463
Show file tree
Hide file tree
Showing 69 changed files with 168 additions and 118 deletions.
2 changes: 1 addition & 1 deletion Documentation/gitcore-tutorial.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1004,7 +1004,7 @@ Updating from ae3a2da... to a80b4aa....
Fast-forward (no commit created; -m option ignored)
example | 1 +
hello | 1 +
2 files changed, 2 insertions(+), 0 deletions(-)
2 files changed, 2 insertions(+)
----------------

Because your branch did not contain anything more than what had
Expand Down
4 changes: 2 additions & 2 deletions Documentation/gittutorial-2.txt
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,12 @@ $ echo 'hello world' > file.txt
$ git add .
$ git commit -a -m "initial commit"
[master (root-commit) 54196cc] initial commit
1 files changed, 1 insertions(+), 0 deletions(-)
1 file changed, 1 insertion(+)
create mode 100644 file.txt
$ echo 'hello world!' >file.txt
$ git commit -a -m "add emphasis"
[master c4d59f3] add emphasis
1 files changed, 1 insertions(+), 1 deletions(-)
1 file changed, 1 insertion(+), 1 deletion(-)
------------------------------------------------

What are the 7 digits of hex that git responded to the commit with?
Expand Down
3 changes: 2 additions & 1 deletion builtin/apply.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#include "builtin.h"
#include "string-list.h"
#include "dir.h"
#include "diff.h"
#include "parse-options.h"

/*
Expand Down Expand Up @@ -3241,7 +3242,7 @@ static void stat_patch_list(struct patch *patch)
show_stats(patch);
}

printf(" %d files changed, %d insertions(+), %d deletions(-)\n", files, adds, dels);
print_stat_summary(stdout, files, adds, dels);
}

static void numstat_patch_list(struct patch *patch)
Expand Down
56 changes: 51 additions & 5 deletions diff.c
Original file line number Diff line number Diff line change
Expand Up @@ -1322,6 +1322,55 @@ static void fill_print_name(struct diffstat_file *file)
file->print_name = pname;
}

int print_stat_summary(FILE *fp, int files, int insertions, int deletions)
{
struct strbuf sb = STRBUF_INIT;
int ret;

if (!files) {
assert(insertions == 0 && deletions == 0);
return fputs(_(" 0 files changed\n"), fp);
}

strbuf_addf(&sb,
Q_(" %d file changed", " %d files changed", files),
files);

/*
* For binary diff, the caller may want to print "x files
* changed" with insertions == 0 && deletions == 0.
*
* Not omitting "0 insertions(+), 0 deletions(-)" in this case
* is probably less confusing (i.e skip over "2 files changed
* but nothing about added/removed lines? Is this a bug in Git?").
*/
if (insertions || deletions == 0) {
/*
* TRANSLATORS: "+" in (+) is a line addition marker;
* do not translate it.
*/
strbuf_addf(&sb,
Q_(", %d insertion(+)", ", %d insertions(+)",
insertions),
insertions);
}

if (deletions || insertions == 0) {
/*
* TRANSLATORS: "-" in (-) is a line removal marker;
* do not translate it.
*/
strbuf_addf(&sb,
Q_(", %d deletion(-)", ", %d deletions(-)",
deletions),
deletions);
}
strbuf_addch(&sb, '\n');
ret = fputs(sb.buf, fp);
strbuf_release(&sb);
return ret;
}

static void show_stats(struct diffstat_t *data, struct diff_options *options)
{
int i, len, add, del, adds = 0, dels = 0;
Expand Down Expand Up @@ -1475,9 +1524,7 @@ static void show_stats(struct diffstat_t *data, struct diff_options *options)
extra_shown = 1;
}
fprintf(options->file, "%s", line_prefix);
fprintf(options->file,
" %d files changed, %d insertions(+), %d deletions(-)\n",
total_files, adds, dels);
print_stat_summary(options->file, total_files, adds, dels);
}

static void show_shortstats(struct diffstat_t *data, struct diff_options *options)
Expand Down Expand Up @@ -1507,8 +1554,7 @@ static void show_shortstats(struct diffstat_t *data, struct diff_options *option
options->output_prefix_data);
fprintf(options->file, "%s", msg->buf);
}
fprintf(options->file, " %d files changed, %d insertions(+), %d deletions(-)\n",
total_files, adds, dels);
print_stat_summary(options->file, total_files, adds, dels);
}

static void show_numstat(struct diffstat_t *data, struct diff_options *options)
Expand Down
3 changes: 3 additions & 0 deletions diff.h
Original file line number Diff line number Diff line change
Expand Up @@ -324,4 +324,7 @@ extern struct userdiff_driver *get_textconv(struct diff_filespec *one);

extern int parse_rename_score(const char **cp_p);

extern int print_stat_summary(FILE *fp, int files,
int insertions, int deletions);

#endif /* DIFF_H */
2 changes: 1 addition & 1 deletion t/t1200-tutorial.sh
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ Updating VARIABLE..VARIABLE
FASTFORWARD (no commit created; -m option ignored)
example | 1 +
hello | 1 +
2 files changed, 2 insertions(+), 0 deletions(-)
2 files changed, 2 insertions(+)
EOF

test_expect_success 'git resolve' '
Expand Down
2 changes: 1 addition & 1 deletion t/t3300-funny-names.sh
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ test_expect_success TABS_IN_FILENAMES 'git diff-tree delete with-funny' \
test_expect_success TABS_IN_FILENAMES 'setup expect' '
cat >expected <<\EOF
"tabs\t,\" (dq) and spaces"
1 files changed, 0 insertions(+), 0 deletions(-)
1 file changed, 0 insertions(+), 0 deletions(-)
EOF
'

Expand Down
12 changes: 6 additions & 6 deletions t/t3508-cherry-pick-many-commits.sh
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,13 @@ test_expect_success 'cherry-pick first..fourth works' '
cat <<-\EOF >expected &&
[master OBJID] second
Author: A U Thor <author@example.com>
1 files changed, 1 insertions(+), 0 deletions(-)
1 file changed, 1 insertion(+)
[master OBJID] third
Author: A U Thor <author@example.com>
1 files changed, 1 insertions(+), 0 deletions(-)
1 file changed, 1 insertion(+)
[master OBJID] fourth
Author: A U Thor <author@example.com>
1 files changed, 1 insertions(+), 0 deletions(-)
1 file changed, 1 insertion(+)
EOF
git checkout -f master &&
Expand All @@ -64,15 +64,15 @@ test_expect_success 'cherry-pick --strategy resolve first..fourth works' '
Trying simple merge.
[master OBJID] second
Author: A U Thor <author@example.com>
1 files changed, 1 insertions(+), 0 deletions(-)
1 file changed, 1 insertion(+)
Trying simple merge.
[master OBJID] third
Author: A U Thor <author@example.com>
1 files changed, 1 insertions(+), 0 deletions(-)
1 file changed, 1 insertion(+)
Trying simple merge.
[master OBJID] fourth
Author: A U Thor <author@example.com>
1 files changed, 1 insertions(+), 0 deletions(-)
1 file changed, 1 insertion(+)
EOF
git checkout -f master &&
Expand Down
4 changes: 2 additions & 2 deletions t/t3903-stash.sh
Original file line number Diff line number Diff line change
Expand Up @@ -444,7 +444,7 @@ test_expect_success 'stash show - stashes on stack, stash-like argument' '
git reset --hard &&
cat >expected <<-EOF &&
file | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
1 file changed, 1 insertion(+)
EOF
git stash show ${STASH_ID} >actual &&
test_cmp expected actual
Expand Down Expand Up @@ -482,7 +482,7 @@ test_expect_success 'stash show - no stashes on stack, stash-like argument' '
git reset --hard &&
cat >expected <<-EOF &&
file | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
1 file changed, 1 insertion(+)
EOF
git stash show ${STASH_ID} >actual &&
test_cmp expected actual
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ $ git diff-tree --cc --patch-with-stat --summary master
59d314ad6f356dd08601a4cd5e530381da3e3c64
dir/sub | 2 ++
file0 | 3 +++
2 files changed, 5 insertions(+), 0 deletions(-)
2 files changed, 5 insertions(+)

diff --cc dir/sub
index cead32e,7289e35..992913c
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ c7a2ab9e8eac7b117442a607d5a9b3950ae34d5a
dir/sub | 2 ++
file0 | 3 +++
file3 | 4 ++++
3 files changed, 9 insertions(+), 0 deletions(-)
3 files changed, 9 insertions(+)
create mode 100644 file3

diff --git a/dir/sub b/dir/sub
Expand Down
2 changes: 1 addition & 1 deletion t/t4013/diff.diff-tree_--cc_--patch-with-stat_master
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ $ git diff-tree --cc --patch-with-stat master
59d314ad6f356dd08601a4cd5e530381da3e3c64
dir/sub | 2 ++
file0 | 3 +++
2 files changed, 5 insertions(+), 0 deletions(-)
2 files changed, 5 insertions(+)

diff --cc dir/sub
index cead32e,7289e35..992913c
Expand Down
2 changes: 1 addition & 1 deletion t/t4013/diff.diff-tree_--cc_--stat_--summary_master
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@ $ git diff-tree --cc --stat --summary master
59d314ad6f356dd08601a4cd5e530381da3e3c64
dir/sub | 2 ++
file0 | 3 +++
2 files changed, 5 insertions(+), 0 deletions(-)
2 files changed, 5 insertions(+)
$
2 changes: 1 addition & 1 deletion t/t4013/diff.diff-tree_--cc_--stat_--summary_side
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ c7a2ab9e8eac7b117442a607d5a9b3950ae34d5a
dir/sub | 2 ++
file0 | 3 +++
file3 | 4 ++++
3 files changed, 9 insertions(+), 0 deletions(-)
3 files changed, 9 insertions(+)
create mode 100644 file3
$
2 changes: 1 addition & 1 deletion t/t4013/diff.diff-tree_--cc_--stat_master
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@ $ git diff-tree --cc --stat master
59d314ad6f356dd08601a4cd5e530381da3e3c64
dir/sub | 2 ++
file0 | 3 +++
2 files changed, 5 insertions(+), 0 deletions(-)
2 files changed, 5 insertions(+)
$
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ $ git diff-tree --pretty=oneline --root --patch-with-stat initial
dir/sub | 2 ++
file0 | 3 +++
file2 | 3 +++
3 files changed, 8 insertions(+), 0 deletions(-)
3 files changed, 8 insertions(+)

diff --git a/dir/sub b/dir/sub
new file mode 100644
Expand Down
2 changes: 1 addition & 1 deletion t/t4013/diff.diff-tree_--pretty_--patch-with-stat_side
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Date: Mon Jun 26 00:03:00 2006 +0000
dir/sub | 2 ++
file0 | 3 +++
file3 | 4 ++++
3 files changed, 9 insertions(+), 0 deletions(-)
3 files changed, 9 insertions(+)

diff --git a/dir/sub b/dir/sub
index 35d242b..7289e35 100644
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Date: Mon Jun 26 00:00:00 2006 +0000
dir/sub | 2 ++
file0 | 3 +++
file2 | 3 +++
3 files changed, 8 insertions(+), 0 deletions(-)
3 files changed, 8 insertions(+)

diff --git a/dir/sub b/dir/sub
new file mode 100644
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Date: Mon Jun 26 00:00:00 2006 +0000
dir/sub | 2 ++
file0 | 3 +++
file2 | 3 +++
3 files changed, 8 insertions(+), 0 deletions(-)
3 files changed, 8 insertions(+)
create mode 100644 dir/sub
create mode 100644 file0
create mode 100644 file2
Expand Down
2 changes: 1 addition & 1 deletion t/t4013/diff.diff-tree_--pretty_--root_--stat_initial
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,5 @@ Date: Mon Jun 26 00:00:00 2006 +0000
dir/sub | 2 ++
file0 | 3 +++
file2 | 3 +++
3 files changed, 8 insertions(+), 0 deletions(-)
3 files changed, 8 insertions(+)
$
2 changes: 1 addition & 1 deletion t/t4013/diff.diff-tree_--root_--patch-with-stat_initial
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ $ git diff-tree --root --patch-with-stat initial
dir/sub | 2 ++
file0 | 3 +++
file2 | 3 +++
3 files changed, 8 insertions(+), 0 deletions(-)
3 files changed, 8 insertions(+)

diff --git a/dir/sub b/dir/sub
new file mode 100644
Expand Down
2 changes: 1 addition & 1 deletion t/t4013/diff.diff-tree_-c_--stat_--summary_master
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@ $ git diff-tree -c --stat --summary master
59d314ad6f356dd08601a4cd5e530381da3e3c64
dir/sub | 2 ++
file0 | 3 +++
2 files changed, 5 insertions(+), 0 deletions(-)
2 files changed, 5 insertions(+)
$
2 changes: 1 addition & 1 deletion t/t4013/diff.diff-tree_-c_--stat_--summary_side
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ c7a2ab9e8eac7b117442a607d5a9b3950ae34d5a
dir/sub | 2 ++
file0 | 3 +++
file3 | 4 ++++
3 files changed, 9 insertions(+), 0 deletions(-)
3 files changed, 9 insertions(+)
create mode 100644 file3
$
2 changes: 1 addition & 1 deletion t/t4013/diff.diff-tree_-c_--stat_master
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@ $ git diff-tree -c --stat master
59d314ad6f356dd08601a4cd5e530381da3e3c64
dir/sub | 2 ++
file0 | 3 +++
2 files changed, 5 insertions(+), 0 deletions(-)
2 files changed, 5 insertions(+)
$
2 changes: 1 addition & 1 deletion t/t4013/diff.diff_--patch-with-stat_-r_initial..side
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ $ git diff --patch-with-stat -r initial..side
dir/sub | 2 ++
file0 | 3 +++
file3 | 4 ++++
3 files changed, 9 insertions(+), 0 deletions(-)
3 files changed, 9 insertions(+)

diff --git a/dir/sub b/dir/sub
index 35d242b..7289e35 100644
Expand Down
2 changes: 1 addition & 1 deletion t/t4013/diff.diff_--patch-with-stat_initial..side
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ $ git diff --patch-with-stat initial..side
dir/sub | 2 ++
file0 | 3 +++
file3 | 4 ++++
3 files changed, 9 insertions(+), 0 deletions(-)
3 files changed, 9 insertions(+)

diff --git a/dir/sub b/dir/sub
index 35d242b..7289e35 100644
Expand Down
2 changes: 1 addition & 1 deletion t/t4013/diff.diff_--stat_initial..side
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@ $ git diff --stat initial..side
dir/sub | 2 ++
file0 | 3 +++
file3 | 4 ++++
3 files changed, 9 insertions(+), 0 deletions(-)
3 files changed, 9 insertions(+)
$
2 changes: 1 addition & 1 deletion t/t4013/diff.diff_-r_--stat_initial..side
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@ $ git diff -r --stat initial..side
dir/sub | 2 ++
file0 | 3 +++
file3 | 4 ++++
3 files changed, 9 insertions(+), 0 deletions(-)
3 files changed, 9 insertions(+)
$
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Content-Transfer-Encoding: 8bit
dir/sub | 2 ++
file0 | 3 +++
file3 | 4 ++++
3 files changed, 9 insertions(+), 0 deletions(-)
3 files changed, 9 insertions(+)
create mode 100644 file3


Expand Down
4 changes: 2 additions & 2 deletions t/t4013/diff.format-patch_--attach_--stdout_initial..master
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ Content-Transfer-Encoding: 8bit
---
dir/sub | 2 ++
file1 | 3 +++
2 files changed, 5 insertions(+), 0 deletions(-)
2 files changed, 5 insertions(+)
create mode 100644 file1


Expand Down Expand Up @@ -124,7 +124,7 @@ Content-Transfer-Encoding: 8bit
dir/sub | 2 ++
file0 | 3 +++
file3 | 4 ++++
3 files changed, 9 insertions(+), 0 deletions(-)
3 files changed, 9 insertions(+)
create mode 100644 file3


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ Content-Transfer-Encoding: 8bit
---
dir/sub | 2 ++
file1 | 3 +++
2 files changed, 5 insertions(+), 0 deletions(-)
2 files changed, 5 insertions(+)
create mode 100644 file1


Expand Down
2 changes: 1 addition & 1 deletion t/t4013/diff.format-patch_--attach_--stdout_initial..side
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Content-Transfer-Encoding: 8bit
dir/sub | 2 ++
file0 | 3 +++
file3 | 4 ++++
3 files changed, 9 insertions(+), 0 deletions(-)
3 files changed, 9 insertions(+)
create mode 100644 file3


Expand Down
Loading

0 comments on commit 7f81463

Please sign in to comment.