Skip to content

Commit

Permalink
Use print_wrapped_text() in shortlog
Browse files Browse the repository at this point in the history
Some oneline descriptions are just too long. In shortlog, it looks much
nicer when they are wrapped. Since print_wrapped_text() is UTF-8 aware,
it also works with those descriptions.

[jc: with minimum fixes]

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
  • Loading branch information
Johannes Schindelin authored and Junio C Hamano committed Apr 10, 2007
1 parent 8ff21b1 commit 3714e7c
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 3 deletions.
11 changes: 8 additions & 3 deletions builtin-shortlog.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#include "diff.h"
#include "path-list.h"
#include "revision.h"
#include "utf8.h"

static const char shortlog_usage[] =
"git-shortlog [-n] [-s] [<commit-id>... ]";
Expand Down Expand Up @@ -323,9 +324,13 @@ int cmd_shortlog(int argc, const char **argv, const char *prefix)
printf("%s: %d\n", list.items[i].path, onelines->nr);
} else {
printf("%s (%d):\n", list.items[i].path, onelines->nr);
for (j = onelines->nr - 1; j >= 0; j--)
printf(" %s\n", onelines->items[j].path);
printf("\n");
for (j = onelines->nr - 1; j >= 0; j--) {
int col = print_wrapped_text(onelines->items[j].path,
6, 9, 76);
if (col != 76)
putchar('\n');
}
putchar('\n');
}

onelines->strdup_paths = 1;
Expand Down
50 changes: 50 additions & 0 deletions t/t4201-shortlog.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
#!/bin/sh
#
# Copyright (c) 2006 Johannes E. Schindelin
#

test_description='git-shortlog
'

. ./test-lib.sh

echo 1 > a1
git add a1
tree=$(git write-tree)
commit=$((echo "Test"; echo) | git commit-tree $tree)
git update-ref HEAD $commit
echo 2 > a1
git commit -m "This is a very, very long first line for the commit message to see if it is wrapped correctly" a1
# test if the wrapping is still valid when replacing all i's by treble clefs.
echo 3 > a1
git commit -m "$(echo "This is a very, very long first line for the commit message to see if it is wrapped correctly" | sed "s/i/1234/g" | tr 1234 '\360\235\204\236')" a1
# now fsck up the utf8
git repo-config i18n.commitencoding non-utf-8
echo 4 > a1
git commit -m "$(echo "This is a very, very long first line for the commit message to see if it is wrapped correctly" | sed "s/i/1234/g" | tr 1234 '\370\235\204\236')" a1
echo 5 > a1
git commit -m "a 12 34 56 78" a1
git shortlog HEAD > out
cat > expect << EOF
A U Thor (5):
Test
This is a very, very long first line for the commit message to see if
it is wrapped correctly
Th𝄞s 𝄞s a very, very long f𝄞rst l𝄞ne for the comm𝄞t message to see 𝄞f
𝄞t 𝄞s wrapped correctly
Thø„žs ø„žs a very, very long fø„žrst lø„žne for the commø„žt
message to see ø„žf ø„žt ø„žs wrapped correctly
a 12 34
56 78
EOF
test_expect_success 'shortlog wrapping' 'diff -u expect out'
test_done

0 comments on commit 3714e7c

Please sign in to comment.