aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohan Herland <johan@herland.net>2011-04-29 11:36:17 +0200
committerJunio C Hamano <gitster@pobox.com>2011-04-29 11:17:36 -0700
commit58a8756a98fbd08add1c25ac61ffa4f4f8a6e776 (patch)
treecd793e1d94b4e0e998ff107638dbf489545b2a58
parent5502039d87337e076e69f7de949cb0e0360de16f (diff)
downloadgit-58a8756a98fbd08add1c25ac61ffa4f4f8a6e776.tar.gz
git-58a8756a98fbd08add1c25ac61ffa4f4f8a6e776.tar.xz
Make --dirstat=0 output directories that contribute < 0.1% of changes
The expected output from --dirstat=0, is to include any directory with changes, even if those changes contribute a minuscule portion of the total changes. However, currently, directories that contribute less than 0.1% are not included, since their 'permille' value is 0, and there is an 'if (permille)' check in gather_dirstat() that causes them to be ignored. This test is obviously intended to exclude directories that contribute no changes whatsoever, but in this case, it hits too broadly. The correct check is against 'this_dir' from which the permille is calculated. Only if this value is 0 does the directory truly contribute no changes, and should be skipped from the output. This patches fixes this issue, and updates corresponding testcases to expect the new behvaior. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--diff.c4
-rwxr-xr-xt/t4047-diff-dirstat.sh4
2 files changed, 4 insertions, 4 deletions
diff --git a/diff.c b/diff.c
index 3b40e597d..004a46b52 100644
--- a/diff.c
+++ b/diff.c
@@ -1502,8 +1502,8 @@ static long gather_dirstat(struct diff_options *opt, struct dirstat_dir *dir,
* under this directory (sources == 1).
*/
if (baselen && sources != 1) {
- int permille = this_dir * 1000 / changed;
- if (permille) {
+ if (this_dir) {
+ int permille = this_dir * 1000 / changed;
int percent = permille / 10;
if (percent >= dir->percent) {
fprintf(opt->file, "%s%4d.%01d%% %.*s\n", line_prefix,
diff --git a/t/t4047-diff-dirstat.sh b/t/t4047-diff-dirstat.sh
index ce7c4033f..1c5adadf3 100755
--- a/t/t4047-diff-dirstat.sh
+++ b/t/t4047-diff-dirstat.sh
@@ -351,7 +351,6 @@ test_expect_success 'vanilla -X' '
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
'
-# rearranged/text falls below 0% threshold (1 / (240 * 9 + 48 + 1) ~= 0.045 %)
cat <<EOF >expect_diff_dirstat
2.1% changed/
10.8% dst/copy/changed/
@@ -360,6 +359,7 @@ cat <<EOF >expect_diff_dirstat
10.8% dst/move/changed/
10.8% dst/move/rearranged/
10.8% dst/move/unchanged/
+ 0.0% rearranged/
10.8% src/move/changed/
10.8% src/move/rearranged/
10.8% src/move/unchanged/
@@ -402,7 +402,6 @@ test_expect_success '-X0' '
test_cmp expect_diff_dirstat_CC actual_diff_dirstat_CC
'
-# rearranged/text falls below 0% threshold (1 / (240 * 9 + 48 + 1) ~= 0.045 %)
cat <<EOF >expect_diff_dirstat
2.1% changed/
10.8% dst/copy/changed/
@@ -414,6 +413,7 @@ cat <<EOF >expect_diff_dirstat
10.8% dst/move/unchanged/
32.5% dst/move/
65.1% dst/
+ 0.0% rearranged/
10.8% src/move/changed/
10.8% src/move/rearranged/
10.8% src/move/unchanged/