mirror of
https://github.com/git/git.git
synced 2024-11-24 18:33:43 +08:00
291e52bd19
This patch is based on Kevin Cernekee's <cernekee@gmail.com> patch series entitled "gitweb: introduce localtime feature". While Kevin's patch changed the server side output so that the timezone was output from gitweb itself, this has a number of drawbacks, in particular with respect to gitweb-caching. This patch takes the same basic goal, display the appropriate times in a given common timezone, and implements it in JavaScript. This requires adding / using a new class, "datetime", to be able to find elements to be adjusted from JavaScript. Appropriate dates are wrapped in a span with this class. Timezone to be used can be retrieved from "gitweb_tz" cookie, though currently there is no way to set / manipulate this cookie from gitweb; this is left for later commit. Valid timezones, currently, are: "utc", "local" (which means that timezone is taken from browser), and "+/-ZZZZ" numeric timezone as in RFC-2822. Default timezone is "local" (currently not configurable, left for later commit). Fallback (should JavaScript not be enabled) is to treat dates as they have been and display them, only, in UTC. Pages affected: * 'summary' view, "last change" field (commit time from latest change) * 'log' view, author time * 'commit' and 'commitdiff' views, author/committer time * 'tag' view, tagger time Based-on-code-from: Kevin Cernekee <cernekee@gmail.com> Signed-off-by: John 'Warthog9' Hawley <warthog9@eaglescrag.net> Signed-off-by: Jakub Narebski <jnareb@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
190 lines
5.3 KiB
Makefile
190 lines
5.3 KiB
Makefile
# The default target of this Makefile is...
|
|
all::
|
|
|
|
# Define V=1 to have a more verbose compile.
|
|
#
|
|
# Define JSMIN to point to JavaScript minifier that functions as
|
|
# a filter to have static/gitweb.js minified.
|
|
#
|
|
# Define CSSMIN to point to a CSS minifier in order to generate a minified
|
|
# version of static/gitweb.css
|
|
#
|
|
|
|
prefix ?= $(HOME)
|
|
bindir ?= $(prefix)/bin
|
|
gitwebdir ?= /var/www/cgi-bin
|
|
|
|
RM ?= rm -f
|
|
INSTALL ?= install
|
|
|
|
# default configuration for gitweb
|
|
GITWEB_CONFIG = gitweb_config.perl
|
|
GITWEB_CONFIG_SYSTEM = /etc/gitweb.conf
|
|
GITWEB_HOME_LINK_STR = projects
|
|
GITWEB_SITENAME =
|
|
GITWEB_PROJECTROOT = /pub/git
|
|
GITWEB_PROJECT_MAXDEPTH = 2007
|
|
GITWEB_EXPORT_OK =
|
|
GITWEB_STRICT_EXPORT =
|
|
GITWEB_BASE_URL =
|
|
GITWEB_LIST =
|
|
GITWEB_HOMETEXT = indextext.html
|
|
GITWEB_CSS = static/gitweb.css
|
|
GITWEB_LOGO = static/git-logo.png
|
|
GITWEB_FAVICON = static/git-favicon.png
|
|
GITWEB_JS = static/gitweb.js
|
|
GITWEB_SITE_HEADER =
|
|
GITWEB_SITE_FOOTER =
|
|
HIGHLIGHT_BIN = highlight
|
|
|
|
# include user config
|
|
-include ../config.mak.autogen
|
|
-include ../config.mak
|
|
-include config.mak
|
|
|
|
# determine version
|
|
../GIT-VERSION-FILE: .FORCE-GIT-VERSION-FILE
|
|
$(QUIET_SUBDIR0)../ $(QUIET_SUBDIR1) GIT-VERSION-FILE
|
|
|
|
-include ../GIT-VERSION-FILE
|
|
|
|
### Build rules
|
|
|
|
SHELL_PATH ?= $(SHELL)
|
|
PERL_PATH ?= /usr/bin/perl
|
|
|
|
# Shell quote;
|
|
bindir_SQ = $(subst ','\'',$(bindir))#'
|
|
gitwebdir_SQ = $(subst ','\'',$(gitwebdir))#'
|
|
gitwebstaticdir_SQ = $(subst ','\'',$(gitwebdir)/static)#'
|
|
SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH))#'
|
|
PERL_PATH_SQ = $(subst ','\'',$(PERL_PATH))#'
|
|
DESTDIR_SQ = $(subst ','\'',$(DESTDIR))#'
|
|
|
|
# Quiet generation (unless V=1)
|
|
QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir
|
|
QUIET_SUBDIR1 =
|
|
|
|
ifneq ($(findstring $(MAKEFLAGS),w),w)
|
|
PRINT_DIR = --no-print-directory
|
|
else # "make -w"
|
|
NO_SUBDIR = :
|
|
endif
|
|
|
|
ifneq ($(findstring $(MAKEFLAGS),s),s)
|
|
ifndef V
|
|
QUIET = @
|
|
QUIET_GEN = $(QUIET)echo ' ' GEN $@;
|
|
QUIET_SUBDIR0 = +@subdir=
|
|
QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \
|
|
$(MAKE) $(PRINT_DIR) -C $$subdir
|
|
export V
|
|
export QUIET
|
|
export QUIET_GEN
|
|
export QUIET_SUBDIR0
|
|
export QUIET_SUBDIR1
|
|
endif
|
|
endif
|
|
|
|
all:: gitweb.cgi static/gitweb.js
|
|
|
|
GITWEB_PROGRAMS = gitweb.cgi
|
|
|
|
ifdef JSMIN
|
|
GITWEB_FILES += static/gitweb.min.js
|
|
GITWEB_JS = static/gitweb.min.js
|
|
all:: static/gitweb.min.js
|
|
static/gitweb.min.js: static/gitweb.js GITWEB-BUILD-OPTIONS
|
|
$(QUIET_GEN)$(JSMIN) <$< >$@
|
|
else
|
|
GITWEB_FILES += static/gitweb.js
|
|
endif
|
|
|
|
ifdef CSSMIN
|
|
GITWEB_FILES += static/gitweb.min.css
|
|
GITWEB_CSS = static/gitweb.min.css
|
|
all:: static/gitweb.min.css
|
|
static/gitweb.min.css: static/gitweb.css GITWEB-BUILD-OPTIONS
|
|
$(QUIET_GEN)$(CSSMIN) <$< >$@
|
|
else
|
|
GITWEB_FILES += static/gitweb.css
|
|
endif
|
|
|
|
GITWEB_FILES += static/git-logo.png static/git-favicon.png
|
|
|
|
# JavaScript files that are composed (concatenated) to form gitweb.js
|
|
#
|
|
# js/lib/common-lib.js should be always first, then js/lib/*.js,
|
|
# then the rest of files; js/gitweb.js should be last (if it exists)
|
|
GITWEB_JSLIB_FILES += static/js/lib/common-lib.js
|
|
GITWEB_JSLIB_FILES += static/js/lib/datetime.js
|
|
GITWEB_JSLIB_FILES += static/js/lib/cookies.js
|
|
GITWEB_JSLIB_FILES += static/js/javascript-detection.js
|
|
GITWEB_JSLIB_FILES += static/js/adjust-timezone.js
|
|
GITWEB_JSLIB_FILES += static/js/blame_incremental.js
|
|
|
|
|
|
GITWEB_REPLACE = \
|
|
-e 's|++GIT_VERSION++|$(GIT_VERSION)|g' \
|
|
-e 's|++GIT_BINDIR++|$(bindir)|g' \
|
|
-e 's|++GITWEB_CONFIG++|$(GITWEB_CONFIG)|g' \
|
|
-e 's|++GITWEB_CONFIG_SYSTEM++|$(GITWEB_CONFIG_SYSTEM)|g' \
|
|
-e 's|++GITWEB_HOME_LINK_STR++|$(GITWEB_HOME_LINK_STR)|g' \
|
|
-e 's|++GITWEB_SITENAME++|$(GITWEB_SITENAME)|g' \
|
|
-e 's|++GITWEB_PROJECTROOT++|$(GITWEB_PROJECTROOT)|g' \
|
|
-e 's|"++GITWEB_PROJECT_MAXDEPTH++"|$(GITWEB_PROJECT_MAXDEPTH)|g' \
|
|
-e 's|++GITWEB_EXPORT_OK++|$(GITWEB_EXPORT_OK)|g' \
|
|
-e 's|++GITWEB_STRICT_EXPORT++|$(GITWEB_STRICT_EXPORT)|g' \
|
|
-e 's|++GITWEB_BASE_URL++|$(GITWEB_BASE_URL)|g' \
|
|
-e 's|++GITWEB_LIST++|$(GITWEB_LIST)|g' \
|
|
-e 's|++GITWEB_HOMETEXT++|$(GITWEB_HOMETEXT)|g' \
|
|
-e 's|++GITWEB_CSS++|$(GITWEB_CSS)|g' \
|
|
-e 's|++GITWEB_LOGO++|$(GITWEB_LOGO)|g' \
|
|
-e 's|++GITWEB_FAVICON++|$(GITWEB_FAVICON)|g' \
|
|
-e 's|++GITWEB_JS++|$(GITWEB_JS)|g' \
|
|
-e 's|++GITWEB_SITE_HEADER++|$(GITWEB_SITE_HEADER)|g' \
|
|
-e 's|++GITWEB_SITE_FOOTER++|$(GITWEB_SITE_FOOTER)|g' \
|
|
-e 's|++HIGHLIGHT_BIN++|$(HIGHLIGHT_BIN)|g'
|
|
|
|
GITWEB-BUILD-OPTIONS: FORCE
|
|
@rm -f $@+
|
|
@echo "x" '$(PERL_PATH_SQ)' $(GITWEB_REPLACE) "$(JSMIN)|$(CSSMIN)" >$@+
|
|
@cmp -s $@+ $@ && rm -f $@+ || mv -f $@+ $@
|
|
|
|
gitweb.cgi: gitweb.perl GITWEB-BUILD-OPTIONS
|
|
$(QUIET_GEN)$(RM) $@ $@+ && \
|
|
sed -e '1s|#!.*perl|#!$(PERL_PATH_SQ)|' \
|
|
$(GITWEB_REPLACE) $< >$@+ && \
|
|
chmod +x $@+ && \
|
|
mv $@+ $@
|
|
|
|
static/gitweb.js: $(GITWEB_JSLIB_FILES)
|
|
$(QUIET_GEN)$(RM) $@ $@+ && \
|
|
cat $^ >$@+ && \
|
|
mv $@+ $@
|
|
|
|
### Testing rules
|
|
|
|
test:
|
|
$(MAKE) -C ../t gitweb-test
|
|
|
|
test-installed:
|
|
GITWEB_TEST_INSTALLED='$(DESTDIR_SQ)$(gitwebdir_SQ)' \
|
|
$(MAKE) -C ../t gitweb-test
|
|
|
|
### Installation rules
|
|
|
|
install: all
|
|
$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(gitwebdir_SQ)'
|
|
$(INSTALL) -m 755 $(GITWEB_PROGRAMS) '$(DESTDIR_SQ)$(gitwebdir_SQ)'
|
|
$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(gitwebstaticdir_SQ)'
|
|
$(INSTALL) -m 644 $(GITWEB_FILES) '$(DESTDIR_SQ)$(gitwebstaticdir_SQ)'
|
|
|
|
### Cleaning rules
|
|
|
|
clean:
|
|
$(RM) gitweb.cgi static/gitweb.min.js static/gitweb.min.css GITWEB-BUILD-OPTIONS
|
|
|
|
.PHONY: all clean install test test-installed .FORCE-GIT-VERSION-FILE FORCE
|
|
|