From: Mark Rada <marada@uwaterloo.ca>
To: git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>, Jakub Narebski <jnareb@gmail.com>
Subject: Re: [PATCHv4] gitweb: fill in missing parts of minify support
Date: Wed, 24 Mar 2010 12:38:15 -0400 [thread overview]
Message-ID: <4BAA3FF7.9040100@mailservices.uwaterloo.ca> (raw)
In-Reply-To: <4BA5133E.6050901@mailservices.uwaterloo.ca>
Hi,
Has this been dropped? Does it need to be modified in some way?
Thanks,
--
Mark Rada (ferrous26)
marada@uwaterloo.ca
On 10-03-20 2:26 PM, Mark Rada wrote:
> JavaScript minification was added to the git build system, but it was a
> hidden away feature that did not play by all the rules and broke
> instaweb when minifying was enabled.
>
> This patch fixes instaweb support and adds rules to the build system to
> take care of minified files; this includes an autoconfigure option so
> that users do not need to edit the makefiles directly, as well as
> documentation updates related to gitweb.js and optional minify support.
>
> This patch also adds support to minify gitweb.css, the effect is not as
> dramatic as minifying gitweb.js, but every saved byte of bandwidth helps.
>
> Signed-off-by: Mark Rada <marada@uwaterloo.ca>
>
> ---
>
> Changes since v3:
> - Patch wouldn't apply because it depended on another patch
> I sent in that has not yet been applied. Junio wondered if part
> of that patch belonged here (or vice versa?), which at the time
> did not seem right to me, but now that this patch has grown, it
> does---Ignore the patch titled "instaweb: use minified gitweb.js
> if available", it is squashed in here now
> - Changed some the INSTALL updates to be less wordy
> - The patch became more broad, to support minification in general,
> which includes gitweb.css
>
>
> .gitignore | 1 +
> Makefile | 33 ++++++++++++++++++++++-----------
> configure.ac | 20 ++++++++++++++++++++
> git-instaweb.sh | 6 ++++--
> gitweb/INSTALL | 30 +++++++++++++++++++++---------
> gitweb/Makefile | 31 +++++++++++++++++--------------
> gitweb/README | 3 ++-
> 7 files changed, 87 insertions(+), 37 deletions(-)
>
> diff --git a/.gitignore b/.gitignore
> index 7b3acb7..4c24152 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -156,6 +156,7 @@
> /git-core-*/?*
> /gitk-git/gitk-wish
> /gitweb/gitweb.cgi
> +/gitweb/gitweb.min.*
> /test-chmtime
> /test-ctype
> /test-date
> diff --git a/Makefile b/Makefile
> index 7c616f8..19c7ef0 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -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 that performs the same
> +# function as a JavaScript minifier, but for CSS files.
> +#
> # 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.
> @@ -279,8 +282,6 @@ lib = lib
> # DESTDIR=
> pathsep = :
>
> -# JavaScript minifier invocation that can function as filter
> -JSMIN =
>
> export prefix bindir sharedir sysconfdir
>
> @@ -1551,19 +1552,27 @@ 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
> +GITWEB_JS=gitweb/gitweb.min.js
> +else
> +GITWEB_JS=gitweb/gitweb.js
> +endif
> +
> +ifdef CSSMIN
> +GITWEB_CSS=gitweb/gitweb.min.css
> else
> -OTHER_PROGRAMS += gitweb/gitweb.cgi
> -gitweb/gitweb.cgi: gitweb/gitweb.perl
> +GITWEB_CSS=gitweb/gitweb.css
> endif
> +
> +OTHER_PROGRAMS += gitweb/gitweb.cgi $(GITWEB_JS) $(GITWEB_CSS)
> +
> +gitweb/gitweb.cgi: gitweb/gitweb.perl $(GITWEB_JS) $(GITWEB_CSS)
> $(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
>
> +gitweb/gitweb.min.css: gitweb/gitweb.css
> + $(QUIET_SUBDIR0)gitweb $(QUIET_SUBDIR1) $(patsubst gitweb/%,%,$@)
>
> git-instaweb: git-instaweb.sh gitweb/gitweb.cgi gitweb/gitweb.css gitweb/gitweb.js
> $(QUIET_GEN)$(RM) $@ $@+ && \
> @@ -1572,10 +1581,12 @@ git-instaweb: git-instaweb.sh gitweb/gitweb.cgi gitweb/gitweb.css gitweb/gitweb.
> -e 's/@@NO_CURL@@/$(NO_CURL)/g' \
> -e '/@@GITWEB_CGI@@/r gitweb/gitweb.cgi' \
> -e '/@@GITWEB_CGI@@/d' \
> - -e '/@@GITWEB_CSS@@/r gitweb/gitweb.css' \
> + -e '/@@GITWEB_CSS@@/r $(GITWEB_CSS)' \
> -e '/@@GITWEB_CSS@@/d' \
> - -e '/@@GITWEB_JS@@/r gitweb/gitweb.js' \
> + -e '/@@GITWEB_JS@@/r $(GITWEB_JS)' \
> -e '/@@GITWEB_JS@@/d' \
> + -e 's|@@GITWEB_JS_NAME@@|$(GITWEB_JS)|' \
> + -e 's|@@GITWEB_CSS_NAME@@|$(GITWEB_CSS)|' \
> -e 's|@@PERL@@|$(PERL_PATH_SQ)|g' \
> $@.sh > $@+ && \
> chmod +x $@+ && \
> @@ -2076,7 +2087,7 @@ clean:
> $(RM) $(htmldocs).tar.gz $(manpages).tar.gz
> $(MAKE) -C Documentation/ clean
> ifndef NO_PERL
> - $(RM) gitweb/gitweb.cgi
> + $(RM) gitweb/{gitweb.cgi,gitweb.min.*}
> $(MAKE) -C perl clean
> endif
> ifndef NO_PYTHON
> diff --git a/configure.ac b/configure.ac
> index 914ae57..cc7df85 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -179,6 +179,26 @@ fi],
> AC_MSG_NOTICE([Will try -pthread then -lpthread to enable POSIX Threads.])
> ])
>
> +# Define option to enable JavaScript minification
> +AC_ARG_ENABLE([jsmin],
> + [AS_HELP_STRING([--enable-jsmin=ARG],
> + [ARG is the value to pass to make to enable JavaScript minification.])],
> + [
> + JSMIN=$enableval;
> + AC_MSG_NOTICE([Setting JSMIN to '$JSMIN' to enable JavaScript minifying])
> + GIT_CONF_APPEND_LINE(JSMIN=$enableval);
> + ])
> +
> + # Define option to enable CSS minification
> +AC_ARG_ENABLE([cssmin],
> + [AS_HELP_STRING([--enable-cssmin=ARG],
> + [ARG is the value to pass to make to enable CSS minification.])],
> + [
> + CSSMIN=$enableval;
> + AC_MSG_NOTICE([Setting CSSMIN to '$CSSMIN' to enable CSS minifying])
> + GIT_CONF_APPEND_LINE(CSSMIN=$enableval);
> + ])
> +
> ## Site configuration (override autodetection)
> ## --with-PACKAGE[=ARG] and --without-PACKAGE
> AC_MSG_NOTICE([CHECKS for site configuration])
> diff --git a/git-instaweb.sh b/git-instaweb.sh
> index 6a65f25..d4941a9 100755
> --- a/git-instaweb.sh
> +++ b/git-instaweb.sh
> @@ -391,18 +391,20 @@ EOFGITWEB
> gitweb_css () {
> cat > "$1" <<\EOFGITWEB
> @@GITWEB_CSS@@
> +
> EOFGITWEB
> }
>
> gitweb_js () {
> cat > "$1" <<\EOFGITWEB
> @@GITWEB_JS@@
> +
> EOFGITWEB
> }
>
> gitweb_cgi "$GIT_DIR/gitweb/gitweb.cgi"
> -gitweb_css "$GIT_DIR/gitweb/gitweb.css"
> -gitweb_js "$GIT_DIR/gitweb/gitweb.js"
> +gitweb_css "$GIT_DIR/@@GITWEB_CSS_NAME@@"
> +gitweb_js "$GIT_DIR/@@GITWEB_JS_NAME@@"
>
> case "$httpd" in
> *lighttpd*)
> diff --git a/gitweb/INSTALL b/gitweb/INSTALL
> index b76a0cf..01ee62c 100644
> --- a/gitweb/INSTALL
> +++ b/gitweb/INSTALL
> @@ -2,11 +2,11 @@ GIT web Interface (gitweb) Installation
> =======================================
>
> First you have to generate gitweb.cgi from gitweb.perl using
> -"make gitweb/gitweb.cgi", then copy appropriate files (gitweb.cgi,
> -gitweb.css, git-logo.png and git-favicon.png) to their destination.
> +"make gitweb", then copy appropriate files (gitweb.cgi, gitweb.js,
> +gitweb.css, git-logo.png and git-favicon.png) to to their destination.
> For example if git was (or is) installed with /usr prefix, you can do
>
> - $ make prefix=/usr gitweb/gitweb.cgi ;# as yourself
> + $ make prefix=/usr gitweb ;# as yourself
> # cp gitweb/git* /var/www/cgi-bin/ ;# as root
>
> Alternatively you can use autoconf generated ./configure script to
> @@ -15,7 +15,7 @@ instead
>
> $ make configure ;# as yourself
> $ ./configure --prefix=/usr ;# as yourself
> - $ make gitweb/gitweb.cgi ;# as yourself
> + $ make gitweb ;# as yourself
> # cp gitweb/git* /var/www/cgi-bin/ ;# as root
>
> The above example assumes that your web server is configured to run
> @@ -61,10 +61,21 @@ file for gitweb (in gitweb/README).
> projectroot linking to projectname/.git (but it is just
> a suggestion).
>
> -- You can control where gitweb tries to find its main CSS style file,
> - its favicon and logo with the GITWEB_CSS, GITWEB_FAVICON and GITWEB_LOGO
> - build configuration variables. By default gitweb tries to find them
> - in the same directory as gitweb.cgi script.
> +- You can control where gitweb tries to find its main JavaScript file,
> + CSS file, favicon and logo with the GITWEB_JS, GITWEB_CSS,
> + GITWEB_FAVICON and GITWEB_LOGO build configuration variables. By default
> + gitweb tries to find them in the same directory as gitweb.cgi script.
> +
> +- You can generate a minified version of gitweb.js and at build
> + time by setting the JSMIN variable to the full path of a JavaScript
> + minifier or using the --enable-jsmin=/PATH/TO/MINIFIER configure script
> + flag. NOTE: substitue gitweb.min.js for gitweb.js in the INSTALL
> + instructions if you choose to use this option.
> +
> +- A minified version of gitweb.css can also be generated by use of the
> + CSSMIN variable or the --enable-cssmin=/PATH/TO/MINIFIER configure
> + script flag. NOTE: substitute gitweb.min.css for gitweb.css in the
> + INSTALL instructions if you choose to use this option.
>
> Build example
> ~~~~~~~~~~~~~
> @@ -74,13 +85,14 @@ Build example
> we want to display are under /home/local/scm, you can do
>
> make GITWEB_PROJECTROOT="/home/local/scm" \
> + GITWEB_JS="/gitweb/gitweb.js" \
> GITWEB_CSS="/gitweb/gitweb.css" \
> GITWEB_LOGO="/gitweb/git-logo.png" \
> GITWEB_FAVICON="/gitweb/git-favicon.png" \
> bindir=/usr/local/bin \
> gitweb/gitweb.cgi
>
> - cp -fv ~/git/gitweb/gitweb.{cgi,css} \
> + cp -fv ~/git/gitweb/gitweb.{.js,cgi,css} \
> ~/git/gitweb/git-{favicon,logo}.png \
> /var/www/cgi-bin/gitweb/
>
> diff --git a/gitweb/Makefile b/gitweb/Makefile
> index c9eb1ee..b6f379a 100644
> --- a/gitweb/Makefile
> +++ b/gitweb/Makefile
> @@ -6,14 +6,14 @@ 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 that performs the same
> +# function as a JavaScript minifier, but for CSS files.
> +#
>
> prefix ?= $(HOME)
> bindir ?= $(prefix)/bin
> RM ?= rm -f
>
> -# JavaScript minifier invocation that can function as filter
> -JSMIN ?=
> -
> # default configuration for gitweb
> GITWEB_CONFIG = gitweb_config.perl
> GITWEB_CONFIG_SYSTEM = /etc/gitweb.conf
> @@ -29,11 +29,7 @@ GITWEB_HOMETEXT = indextext.html
> GITWEB_CSS = gitweb.css
> GITWEB_LOGO = git-logo.png
> GITWEB_FAVICON = git-favicon.png
> -ifdef JSMIN
> -GITWEB_JS = gitweb.min.js
> -else
> GITWEB_JS = gitweb.js
> -endif
> GITWEB_SITE_HEADER =
> GITWEB_SITE_FOOTER =
>
> @@ -84,15 +80,17 @@ endif
>
> all:: gitweb.cgi
>
> +FILES=gitweb.cgi gitweb.min*
> +
> 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
> +GITWEB_JS = gitweb.min.js
> +endif
> +
> +ifdef CSSMIN
> +GITWEB_CSS = gitweb.min.css
> +endif
>
> -gitweb.cgi:
> +gitweb.cgi: gitweb.perl $(GITWEB_JS) $(GITWEB_CSS)
> $(QUIET_GEN)$(RM) $@ $@+ && \
> sed -e '1s|#!.*perl|#!$(PERL_PATH_SQ)|' \
> -e 's|++GIT_VERSION++|$(GIT_VERSION)|g' \
> @@ -123,6 +121,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)
>
> diff --git a/gitweb/README b/gitweb/README
> index ad6a04c..0efa770 100644
> --- a/gitweb/README
> +++ b/gitweb/README
> @@ -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 build 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
next prev parent reply other threads:[~2010-03-24 16:39 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-20 18:26 [PATCHv4] gitweb: fill in missing parts of minify support Mark Rada
2010-03-24 16:38 ` Mark Rada [this message]
2010-03-24 17:11 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4BAA3FF7.9040100@mailservices.uwaterloo.ca \
--to=marada@uwaterloo.ca \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jnareb@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).