header

WiGit: A Git-based Wiki

About

WiGit is a simple Wiki written in PHP, using Git as a backend for tracking changes. Besides Git, this wiki makes use of Textile for marking up text.

Features

  • Very simple and light
  • Easily customizable using themes
  • Extensive syntax for marking up text (using Textile)
  • Full history tracking support
  • Basic support for users/authors, by using the HTTP authentication headers to extract the user.
  • Support for pretty URLs (using URL rewriting)

Requirements

  • Webserver
  • PHP4
  • Git

Download

Installation

  • Put the WiGit dir in some place where the webserver can find it
  • Make sure there’s a ‘data’ subdir, and that it is writable by the webserver
  • Copy config.php.sample to config.php, and edit config.php to reflect your local settings
  • Surf to the wigit URL, and you should start by editing the front page

For URL rewriting, change the SCRIPT_URL to be the base URL prefix (as is shown in the config file), and add the necessary URL rewrite rules for your webserver. E.g.,

  • For Apache, add the following to .htaccess in your wigit install dir:

      <IfModule mod_rewrite.c>
          RewriteEngine On
          RewriteBase /wigit/
          RewriteCond %{REQUEST_FILENAME} !-f
          RewriteRule (.*) /wigit/index.php?r=/$1 [L] 
      </IfModule>
    
  • For lighttpd, add the following to your config file:

      url.rewrite-once = (
              "^/wigit/themes/(.*)" => "$0",
              "^/wigit(.*)" => "/wigit/index.php?r=$1",
          )
    

(where /wigit is replaced by your own base url)

For user support, configure your webserver to require authentication for the wigit install dir. E.g.

  • For Apache, add the following to .htaccess in your wigit install dir:

      AuthType Basic
      AuthName "My WiGit"
      AuthUserFile /path/to/passwords/file
      Require valid-user
    
  • For lighttpd, add the following to your config file:

      auth.backend = "htdigest"
      auth.backend.htdigest.userfile = "/path/to/htdigest/file"
      auth.require = (
                  "/wigit" => (
                          "method" => "digest",
                          "realm" => "My WiGit",
                          "require" => "valid-user",
                      )
              )
    

Screenshots