Skip to content

Commit

Permalink
Gitweb: add support for minifying gitweb.css
Browse files Browse the repository at this point in the history
The build system added support minifying gitweb.js through a
JavaScript minifier, but most minifiers come with support for
minifying CSS files as well, so we should use it if we can.

This patch will add the same facilities to gitweb.css that
gitweb.js has for minification. That does not mean that they
will use the same minifier though, as it is not safe to assume
that all JavaScript minifiers will also minify CSS files.

This patch also adds the GITWEB_PROGRAMS variable to the Makefile
to keep a list of potential gitweb dependencies separate from
OTHER_PROGRAMS when we need to know just the gitweb dependencies.

Though the bandwidth savings will not be as dramatic as with
the JavaScript minifier, every byte saved is important.

Signed-off-by: Mark Rada <marada@uwaterloo.ca>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Mark Rada authored and Junio C Hamano committed Apr 3, 2010
1 parent 8830bf4 commit 0e6ce21
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 14 deletions.
21 changes: 15 additions & 6 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,9 @@ all::
# Define JSMIN to point to JavaScript minifier that functions as
# a filter to have gitweb.js minified.
#
# Define CSSMIN to point to a CSS minifier in order to generate a minified
# version of gitweb.css
#
# Define DEFAULT_PAGER to a sensible pager command (defaults to "less") if
# you want to use something different. The value will be interpreted by the
# shell at runtime when it is used.
Expand Down Expand Up @@ -279,8 +282,9 @@ lib = lib
# DESTDIR=
pathsep = :

# JavaScript minifier invocation that can function as filter
# JavaScript/CSS minifier invocation that can function as filter
JSMIN =
CSSMIN =

export prefix bindir sharedir sysconfdir

Expand Down Expand Up @@ -1560,18 +1564,23 @@ gitweb:
$(QUIET_SUBDIR0)gitweb $(QUIET_SUBDIR1) all

ifdef JSMIN
OTHER_PROGRAMS += gitweb/gitweb.cgi gitweb/gitweb.min.js
gitweb/gitweb.cgi: gitweb/gitweb.perl gitweb/gitweb.min.js
else
OTHER_PROGRAMS += gitweb/gitweb.cgi
gitweb/gitweb.cgi: gitweb/gitweb.perl
GITWEB_PROGRAMS += gitweb/gitweb.min.js
endif
ifdef CSSMIN
GITWEB_PROGRAMS += gitweb/gitweb.min.css
endif
OTHER_PROGRAMS += gitweb/gitweb.cgi $(GITWEB_PROGRAMS)
gitweb/gitweb.cgi: gitweb/gitweb.perl $(GITWEB_PROGRAMS)
$(QUIET_SUBDIR0)gitweb $(QUIET_SUBDIR1) $(patsubst gitweb/%,%,$@)

ifdef JSMIN
gitweb/gitweb.min.js: gitweb/gitweb.js
$(QUIET_SUBDIR0)gitweb $(QUIET_SUBDIR1) $(patsubst gitweb/%,%,$@)
endif # JSMIN
ifdef CSSMIN
gitweb/gitweb.min.css: gitweb/gitweb.css
$(QUIET_SUBDIR0)gitweb $(QUIET_SUBDIR1) $(patsubst gitweb/%,%,$@)
endif # CSSMIN


git-instaweb: git-instaweb.sh gitweb/gitweb.cgi gitweb/gitweb.css gitweb/gitweb.js
Expand Down
5 changes: 5 additions & 0 deletions gitweb/INSTALL
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,11 @@ file for gitweb (in gitweb/README).
build configuration variables. By default gitweb tries to find them
in the same directory as gitweb.cgi script.

- You can optionally generate a minified version of gitweb.css by defining
the CSSMIN build configuration variable. By default the non-minified
version of gitweb.css will be used. NOTE: if you enable this option,
substitute gitweb.min.css for all uses of gitweb.css in the help files.

Build example
~~~~~~~~~~~~~

Expand Down
28 changes: 21 additions & 7 deletions gitweb/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,17 @@ all::
# Define JSMIN to point to JavaScript minifier that functions as
# a filter to have gitweb.js minified.
#
# Define CSSMIN to point to a CSS minifier in order to generate a minified
# version of gitweb.css
#

prefix ?= $(HOME)
bindir ?= $(prefix)/bin
RM ?= rm -f

# JavaScript minifier invocation that can function as filter
# JavaScript/CSS minifier invocation that can function as filter
JSMIN ?=
CSSMIN ?=

# default configuration for gitweb
GITWEB_CONFIG = gitweb_config.perl
Expand All @@ -26,7 +30,11 @@ GITWEB_STRICT_EXPORT =
GITWEB_BASE_URL =
GITWEB_LIST =
GITWEB_HOMETEXT = indextext.html
ifdef CSSMIN
GITWEB_CSS = gitweb.min.css
else
GITWEB_CSS = gitweb.css
endif
GITWEB_LOGO = git-logo.png
GITWEB_FAVICON = git-favicon.png
ifdef JSMIN
Expand Down Expand Up @@ -84,13 +92,14 @@ endif

all:: gitweb.cgi

FILES = gitweb.cgi
ifdef JSMIN
FILES=gitweb.cgi gitweb.min.js
gitweb.cgi: gitweb.perl gitweb.min.js
else # !JSMIN
FILES=gitweb.cgi
gitweb.cgi: gitweb.perl
endif # JSMIN
FILES += gitweb.min.js
endif
ifdef CSSMIN
FILES += gitweb.min.css
endif
gitweb.cgi: gitweb.perl $(GITWEB_JS) $(GITWEB_CSS)

gitweb.cgi:
$(QUIET_GEN)$(RM) $@ $@+ && \
Expand Down Expand Up @@ -123,6 +132,11 @@ gitweb.min.js: gitweb.js
$(QUIET_GEN)$(JSMIN) <$< >$@
endif # JSMIN

ifdef CSSMIN
gitweb.min.css: gitweb.css
$(QUIET_GEN)$(CSSMIN) <$ >$@
endif

clean:
$(RM) $(FILES)

Expand Down
3 changes: 2 additions & 1 deletion gitweb/README
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,8 @@ You can specify the following configuration variables when building GIT:
Points to the location where you put gitweb.css on your web server
(or to be more generic, the URI of gitweb stylesheet). Relative to the
base URI of gitweb. Note that you can setup multiple stylesheets from
the gitweb config file. [Default: gitweb.css]
the gitweb config file. [Default: gitweb.css (or gitweb.min.css if the
CSSMIN variable is defined / CSS minifier is used)]
* GITWEB_LOGO
Points to the location where you put git-logo.png on your web server
(or to be more generic URI of logo, 72x27 size, displayed in top right
Expand Down

0 comments on commit 0e6ce21

Please sign in to comment.