Skip to content
  • Jakub Narębski's avatar
    git-instaweb: Add support for running gitweb via 'plackup' · 78646987
    Jakub Narębski authored and Junio C Hamano's avatar Junio C Hamano committed
    PSGI is an interface between Perl web applications and web servers, and
    Plack is a Perl module and toolkit that contains PSGI middleware, helpers
    and adapters to web servers; see http://plackperl.org
    
    
    
    PSGI and Plack are inspired by Python's WSGI and Ruby's Rack (and
    probably JavaScript's Jack/JSGI).
    
    Plack core distribution includes HTTP::Server::PSGI, a reference PSGI
    standalone web server implementation.  'plackup' is a command line
    launcher to run PSGI applications from command line, connecting web
    app to a web server via Plack::Runner module.  By default it uses
    HTTP::Server::PSGI as a web server.
    
    git-instaweb generates gitweb.psgi wrapper (in $GIT_DIR/gitweb).  This
    wrapper uses Plack::App::WrapCGI to compile gitweb.cgi (which is a CGI
    script) into a PSGI application using CGI::Compile and CGI::Emulate::PSGI.
    git-instaweb then runs this wrapper, using by default HTTP::Server::PSGI
    standalone Perl server, via Plack::Runner.
    
    The configuration for 'plackup' is currently embedded in generated
    gitweb.psgi wrapper, instead of using httpd.conf ($conf).
    
    To run git-instaweb with '--httpd=plackup', you need to have instaled
    Plack core, CGI::Emulate::PSGI, CGI::Compile.  Those modules have to be
    available for Perl scripts (which can be done for example by setting
    PERL5LIB environment variable).  This is currently not documented.
    
    Signed-off-by: default avatarJakub Narebski <jnareb@gmail.com>
    Acked-by: default avatarPetr Baudis <pasky@suse.cz>
    Acked-by: default avatarEric Wong <normalperson@yhbt.net>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    78646987