summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@osdl.org>2005-07-29 03:37:23 (GMT)
committerJunio C Hamano <junkio@cox.net>2005-07-29 04:05:06 (GMT)
commit629170973d6fca813a7593c3aac9bb18a8e476a8 (patch)
tree9ece6ca5560a1375d270dd1f8839496bdbf7eb1a
parentdf076bdbccd26ccaf49fc332303f512403c8cde6 (diff)
downloadgit-629170973d6fca813a7593c3aac9bb18a8e476a8.zip
git-629170973d6fca813a7593c3aac9bb18a8e476a8.tar.gz
git-629170973d6fca813a7593c3aac9bb18a8e476a8.tar.bz2
[PATCH] Make git-apply --stat less butt-ugly with long filenames
When git-apply was printing out long filenames, it used to just truncate them to show the last "max_len" characters of the filename. Which can be really quite ugly (note the two filenames that have just been silently truncated from the beginning - it looks even worse when there are lots of them, like there were in the current v2.6.13-rc4 cris arch update): Documentation/video4linux/README.saa7134 | 9 Documentation/video4linux/bttv/Cards | 74 umentation/video4linux/hauppauge-wintv-cx88-ir.txt | 54 Documentation/video4linux/lifeview.txt | 42 mentation/video4linux/not-in-cx2388x-datasheet.txt | 41 Documentation/w1/w1.generic | 107 With this patch it now looks like so: Documentation/video4linux/README.saa7134 | 9 Documentation/video4linux/bttv/Cards | 74 .../video4linux/hauppauge-wintv-cx88-ir.txt | 54 Documentation/video4linux/lifeview.txt | 42 .../video4linux/not-in-cx2388x-datasheet.txt | 41 Documentation/w1/w1.generic | 107 ie we've made it clear with an ellipsis that we've cut off something from the beginning, and it also tries to do it cleanly at a subdirectory level. Signed-off-by: Linus "good taste" Torvalds <torvalds@osdl.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
-rw-r--r--apply.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/apply.c b/apply.c
index 630d6bc..c671d9e 100644
--- a/apply.c
+++ b/apply.c
@@ -737,6 +737,7 @@ static const char minuses[]= "--------------------------------------------------
static void show_stats(struct patch *patch)
{
+ const char *prefix = "";
char *name = patch->new_name;
int len, max, add, del, total;
@@ -750,8 +751,15 @@ static void show_stats(struct patch *patch)
max = max_len;
if (max > 50)
max = 50;
- if (len > max)
+ if (len > max) {
+ char *slash;
+ prefix = "...";
+ max -= 3;
name += len - max;
+ slash = strchr(name, '/');
+ if (slash)
+ name = slash;
+ }
len = max;
/*
@@ -770,7 +778,7 @@ static void show_stats(struct patch *patch)
add = (add * max + max_change / 2) / max_change;
del = total - add;
}
- printf(" %-*s |%5d %.*s%.*s\n",
+ printf(" %s%-*s |%5d %.*s%.*s\n", prefix,
len, name, patch->lines_added + patch->lines_deleted,
add, pluses, del, minuses);
}