Subject: [RFC PATCH 00/10] gitweb: Simple file based output caching

From: Jakub Narebski <[email-masked]>
Date: Sat, 23 Jan 2010 01:27:23 +0100

This 10 patches long patch series is intended as proof of concept
for splitting large 'gitweb: File based caching layer (from git.kernel.org)'
mega-patch by John 'Warthog9' Hawley aka J.H., by starting small and
adding features piece by piece.

This patch is meant as replacement for last two patches:
* [PATCH 8/9] gitweb: Convert output to using indirect file handle
  Message-ID: <[email-masked]>
* [PATCH 9/9] gitweb: File based caching layer (from git.kernel.org)
  Message-ID: <[email-masked]>

in the long patch series by J.H.
* [PATCH 0/9] Gitweb caching v5
  http://thread.gmane.org/gmane.comp.version-control.git/136913

Note that this patch series is part of 'gitweb/cache-kernel' branch of
http://repo.or.cz/w/git/jnareb-git.git repository (gitweb link), built
on top of modified patches from 'Gitweb caching v2' series (from
'gitweb-ml-v2' branch of http://git.kernel.org/?p=git/warthog9/gitweb.git
repository).  Therefore they might not apply as straight replacements
on top of early parts of 'gitweb-ml-v5' branch.

This is work in progress (showing how I see introducing output caching
to gitweb), it lacks proper documentation (POD for gitweb/cache.pm,
new configuration variables in gitweb/README, perhaps "Gitweb caching"
section in gitweb/README and gitweb/cache.pm mentioned in gitweb/INSTALL),
and commits/patches marked '(WIP)' lacks proper commit message.

Just food for thought...

Table of contents:
~~~~~~~~~~~~~~~~~~
 [RFC PATCH 01/10] gitweb: Print to explicit filehandle (preparing
                   for caching)
 [RFC PATCH 02/10] gitweb: href(..., -path_info => 0|1)
 [RFC PATCH 03/10] gitweb/cache.pm - Very simple file based caching
 [RFC PATCH 04/10] gitweb/cache.pm - Stat-based cache expiration
 [RFC PATCH 05/10] gitweb: Use Cache::Cache compatibile (get, set)
                   output caching (WIP)
 [RFC PATCH 06/10] gitweb/cache.pm - Adaptive cache expiration time (WIP)
 [RFC PATCH 07/10] gitweb: Use CHI compatibile (compute method) caching (WIP)
 [RFC PATCH 08/10] gitweb/cache.pm - Use locking to avoid 'stampeding herd'
                   problem (WIP)
 [RFC PATCH 09/10] gitweb/cache.pm - Serve stale data when waiting for
                   filling cache (WIP)
 [RFC PATCH 10/10] gitweb: Show appropriate "Generating..." page when
                   regenerating cache (WIP)

Diffstat:
~~~~~~~~~

 gitweb/cache.pm                        |  566 ++++++++++
 gitweb/gitweb.perl                     | 1923 +++++++++++++++++---------------
 t/gitweb-lib.sh                        |    2 +
 t/t9500-gitweb-standalone-no-errors.sh |   13 +
 t/t9503-gitweb-caching.sh              |   32 +
 t/t9503/test_cache_interface.pl        |  195 ++++
 t/test-lib.sh                          |    3 +
 7 files changed, 1836 insertions(+), 898 deletions(-)
 create mode 100644 gitweb/cache.pm
 create mode 100755 t/t9503-gitweb-caching.sh
 create mode 100755 t/t9503/test_cache_interface.pl