diff options
author | Johannes Schindelin <Johannes.Schindelin@gmx.de> | 2006-12-22 22:15:59 +0100 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2007-04-10 12:48:35 -0700 |
commit | 3714e7c8950681b440508244a1fcf5899a1b0966 (patch) | |
tree | 1f3bda28b6adade9d532e43a19c61644fd19ace0 | |
parent | git-archive: make tar the default format (diff) | |
download | tgif-3714e7c8950681b440508244a1fcf5899a1b0966.tar.xz |
Use print_wrapped_text() in shortlog
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>
-rw-r--r-- | builtin-shortlog.c | 11 | ||||
-rw-r--r-- | t/t4201-shortlog.sh | 50 |
2 files changed, 58 insertions, 3 deletions
diff --git a/builtin-shortlog.c b/builtin-shortlog.c index 29343aefc8..2cdd528967 100644 --- a/builtin-shortlog.c +++ b/builtin-shortlog.c @@ -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>... ]"; @@ -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; diff --git a/t/t4201-shortlog.sh b/t/t4201-shortlog.sh new file mode 100644 index 0000000000..ab8a0888f6 --- /dev/null +++ b/t/t4201-shortlog.sh @@ -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 |