cgit
Appearance
cgit is fast web interface for the git. cgit has built a cache and is compiled in c so it's very quick.
To start out, download the current version of cgit via git
git clone git://git.zx2c4.com/cgit
Next you need to setup the git submodule
cd cgit git submodule init git submodule update
Then compile the software
make
And install it
make install mkdir -p /var/cache/cgit chown apache:apache /var/cache/cgit
After you have installed cgit, you will need to setup Apache to run cgit. This is pretty easy, just edit your /etc/httpd/conf/httpd.conf file and add the following for the site you wish to run cgit on.
<Directory "/var/www/code.mattrude.com/"> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory>
Or you may try my quick setup
mkdir -p /var/src cd /var/src/ rm -rf cgit git clone git://hjemli.net/pub/git/cgit cd cgit git submodule init git submodule update sed -i 's/CGIT_CONFIG = \/etc\/cgitrc/CGIT_CONFIG = \/var\/www\/code.mattrude.com\/cgitrc/g' Makefile sed -i 's/CGIT_SCRIPT_PATH = \/var\/www\/htdocs\/cgit/CGIT_CONFIG = \/var\/www\/code.mattrude.com\/cgit/g' Makefile make && make install mkdir -p /var/cache/cgit chown nginx:nginx /var/cache/cgit
Or
apt-get -y install gcc make libcurl4-openssl-dev mkdir -p /var/src && cd /var/src && rm -rf cgit && git clone git://hjemli.net/pub/git/cgit && cd cgit && \ git submodule init && git submodule update && \ sed -i 's/CGIT_CONFIG = \/etc\/cgitrc/CGIT_CONFIG = \/var\/www\/code.mattrude.com\/cgitrc/g' Makefile && \ sed -i 's/CGIT_SCRIPT_PATH = \/var\/www\/htdocs\/cgit/CGIT_SCRIPT_PATH = \/var\/www\/code.mattrude.com/g' Makefile && \ make && make install && mkdir -p /var/cache/cgit
Config file[edit | edit source]
Once your done setting up cgit in Apache, you may configure cgit by creating a cgitrc file at /etc/cgitrc. Below is the example config file.
EXAMPLE CGITRC FILE ------------------- # Enable caching of up to 1000 output entriess cache-size=1000 # Specify some default clone prefixes clone-prefix=git://foobar.com ssh://foobar.com/pub/git http://foobar.com/git # Specify the css url css=/css/cgit.css # Show extra links for each repository on the index page enable-index-links=1 # Show number of affected files per commit on the log pages enable-log-filecount=1 # Show number of added/removed lines per commit on the log pages enable-log-linecount=1 # Add a cgit favicon favicon=/favicon.ico # Use a custom logo logo=/img/mylogo.png # Enable statistics per week, month and quarter max-stats=quarter # Set the title and heading of the repository index page root-title=foobar.com git repositories # Set a subheading for the repository index page root-desc=tracking the foobar development # Include some more info about foobar.com on the index page root-readme=/var/www/htdocs/about.html # Allow download of tar.gz, tar.bz2 and zip-files snapshots=tar.gz tar.bz2 zip ## ## List of common mimetypes ## mimetype.git=image/git mimetype.html=text/html mimetype.jpg=image/jpeg mimetype.jpeg=image/jpeg mimetype.pdf=application/pdf mimetype.png=image/png mimetype.svg=image/svg+xml ## ## List of repositories. ## PS: Any repositories listed when section is unset will not be ## displayed under a section heading ## PPS: This list could be kept in a different file (e.g. '/etc/cgitrepos') ## and included like this: ## include=/etc/cgitrepos ## repo.url=foo repo.path=/pub/git/foo.git repo.desc=the master foo repository [email protected] repo.readme=info/web/about.html repo.url=bar repo.path=/pub/git/bar.git repo.desc=the bars for your foo [email protected] repo.readme=info/web/about.html # The next repositories will be displayed under the 'extras' heading section=extras repo.url=baz repo.path=/pub/git/baz.git repo.desc=a set of extensions for bar users repo.url=wiz repo.path=/pub/git/wiz.git repo.desc=the wizard of foo # Add some mirrored repositories section=mirrors repo.url=git repo.path=/pub/git/git.git repo.desc=the dscm repo.url=linux repo.path=/pub/git/linux.git repo.desc=the kernel # Disable adhoc downloads of this repo repo.snapshots=0 # Disable line-counts for this repo repo.enable-log-linecount=0 # Restrict the max statistics period for this repo repo.max-stats=month
Configuring CGIT on Apache[edit | edit source]
<VirtualHost *:9000> ServerName code.example.com DocumentRoot /var/www/code.example.com SetEnv CGIT_CONFIG /var/www/code.example.com/cgitrc Alias /cgit.css /var/www/code.example.com/cgit.css Alias /mattrude.png /var/www/code.example.com/cgit.png Alias /favicon.ico /var/www/code.example.com/favicon.ico Alias /robots.txt /var/www/code.example.com/robots.txt Alias / /var/www/code.example.com/cgit.cgi/ <IfModule mod_expires.c> ExpiresActive On ExpiresByType image/png "access plus 6 month" ExpiresByType image/ico "access plus 6 month" ExpiresByType text/css "access plus 6 month" </IfModule> <IfModule mod_deflate.c> SetOutputFilter DEFLATE # Don't compress SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary #Dealing with proxy servers <IfModule mod_headers.c> Header append Vary User-Agent </IfModule> </IfModule> <Directory /var/www/code.example.com> Options Indexes FollowSymLinks Options +ExecCGI Order allow,deny Allow from all AddHandler cgi-script .cgi DirectoryIndex cgit.cgi </Directory> </VirtualHost>