Junio C Hamano [off-list ref] writes:
Jakub Narebski [off-list ref] writes:
quoted
... That means that we cannot distinguish really well (at
least color) between tree and blob entries.
Do we even say links are blue and underlined by forcing that in
our css?
Doesn't leading drwxr-xr-x mean anything?
Why is making the distinction important in the first place?
Anyhow, I was too tired to sleep after an unscheduled day-job on
Sunday X-<, and whipped this up for fun.
-- >8 --
[PATCH] gitweb: remove UNIXy mode bits from tree display
and replace it with an image icon for cuteness ;-).
Signed-off-by: Junio C Hamano <redacted>
---
gitweb/gitweb.css | 20 ++++++++++++++++++++
gitweb/gitweb.perl | 21 ++++++++++++++++++++-
2 files changed, 40 insertions(+), 1 deletions(-)
diff --git a/gitweb/gitweb.css b/gitweb/gitweb.css
index eb9fc38..c4aaf7c 100644
--- a/gitweb/gitweb.css
+++ b/gitweb/gitweb.css
@@ -211,6 +211,26 @@ td.selflink {
padding-right: 0px;
}
+td.executable {
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANAQMAAABIJXY/AAAABlBMVEX///+UAN7OszyBAAAAAXRSTlMAQObYZgAAACVJREFUCNdjYGBgYGdgMEhgUFBgYGJgcBKAIiAbKAIUB8oyMAAANBcCqbivEbgAAAAASUVORK5CYII=);
+ background-repeat: no-repeat;
+}
+
+td.folder {
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANAQMAAABIJXY/AAAABlBMVEX///+UAN7OszyBAAAAAXRSTlMAQObYZgAAAB1JREFUCNdjYGBgkGFgUGJgcPzA4CCABdV/ACoBAFTTBQ822ZerAAAAAElFTkSuQmCC);
+ background-repeat: no-repeat;
+}
+
+td.regular {
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANAQMAAABIJXY/AAAABlBMVEX///+UAN7OszyBAAAAAXRSTlMAQObYZgAAABtJREFUCNdjqD/A4JDA4BDA4FDB4MCBHdX/AACO5wbfUNnbqwAAAABJRU5ErkJggg==);
+ background-repeat: no-repeat;
+}
+
+td.symlink {
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAANAQMAAABIJXY/AAAABlBMVEX///+UAN7OszyBAAAAAXRSTlMAQObYZgAAACVJREFUCNdjYGBg4G9gMEhgUFBgcBAAIQYYYlFg4ElgkG8AKgEARSsDX750+Y0AAAAASUVORK5CYII=);
+ background-repeat: no-repeat;
+}
+
td.sha1 {
font-family: monospace;
}diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index 7e4ec8d..8c54a5d 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -567,6 +567,23 @@ sub age_string {
}
# convert file mode in octal to symbolic file mode string
+sub kind_class {
+ my ($type, $mode) = @_;
+ $mode = oct $mode;
+ if (S_ISDIR($mode & S_IFMT)) {
+ return 'folder';
+ } elsif (S_ISLNK($mode)) {
+ return 'symlink';
+ } elsif (S_ISREG($mode)) {
+ # git cares only about the executable bit
+ if ($mode & S_IXUSR) {
+ return 'executable';
+ } else {
+ return 'regular';
+ };
+ }
+}
+
sub mode_str {
my $mode = oct shift;
@@ -1651,7 +1668,9 @@ sub git_print_tree_entry {
# the mode of the entry, list is the name of the entry, an href,
# and link is the action links of the entry.
- print "<td class=\"mode\">" . mode_str($t->{'mode'}) . "</td>\n";
+ my $kind = kind_class($t->{'type'}, $t->{'mode'});
+ print "<td class=\"$kind\"> </td>\n";
+
if ($t->{'type'} eq "blob") {
print "<td class=\"list\">" .
$cgi->a({-href => href(action=>"blob", hash=>$t->{'hash'},--
1.4.2.2.g91c5