Git and Gitweb

From Amahi Wiki
Revision as of 02:55, 13 March 2012 by Bigfoot65 (talk | contribs) (Created page with "[http://git-scm.com/ Git] is a free & open source, distributed version control system designed to handle everything from small to very large projects with speed and efficiency. ...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Git is a free & open source, distributed version control system designed to handle everything from small to very large projects with speed and efficiency. Every Git clone is a full-fledged repository with complete history and full revision tracking capabilities, not dependent on network access or a central server. Branching and merging are fast and easy to do. Coupled with Gitweb, provides a web interface for browsing your project.

Setup

Open a terminal as root user and do the following:

  • Install dependencies
bash code
​yum -y install git git-daemon gitweb​
  • Add user
bash code
​useradd -U -d /var/cache/git -s /usr/libexec/git-core/git-shell git​
  • Set directory permissions
bash code
​cd /var/cache chown -R git:git git chmod 755 git​
  • Create public SSH key storage
bash code
​cd /var/cache/git; mkdir .ssh chmod 700 .ssh touch .ssh/authorized_keys chmod 600 .ssh/authorized_keys chown -R git:git .ssh/​
  • Create init script
bash code
​vi /etc/init.d/git​
Text
​#!/bin/sh # # Startup/shutdown script for Git Daemon # # Linux chkconfig stuff: # # chkconfig: 345 56 10 # description: Startup/shutdown script for Git Daemon # . /etc/init.d/functions DAEMON=/usr/libexec/git-core/git-daemon ARGS='--base-path=/var/cache/git --detach --syslog --export-all --user=git --group=git' prog=git-daemon start () { echo -n $"Starting $prog: " # start daemon daemon $DAEMON $ARGS RETVAL=$? echo [ $RETVAL = 0 ] && touch /var/lock/git-daemon return $RETVAL } stop () { # stop daemon echo -n $"Stopping $prog: " killproc $DAEMON RETVAL=$? echo [ $RETVAL = 0 ] && rm -f /var/lock/git-daemon } restart() { stop start } case $1 in start) start ;; stop) stop ;; restart) restart ;; status) status $DAEMON RETVAL=$? ;; *) echo $"Usage: $prog {start​
  • Set init script to run
bash code
​chmod 755 /etc/init.d/git; chkconfig git on service git start​
  • Create repository
bash code
​cd /var/cache/git/ mkdir test.git cd test.git git init --bare chown -R git:git ../test.git/​
  • Add a short description
bash code
​cd /var/cache/git/test.git/ echo "test test repo" > description​
  • Configure user access
bash code
​vi config​
Text
​[core] repositoryformatversion = 0 filemode = true bare = true [gitweb] owner = Your Name​
  • Create local repository and commit
bash code
​mkdir ~/test cd ~/test && git init echo 'test' > README git add README git commit -m "initial README file"
  • Create SSH rsa public key
bash code
​ssh-keygen -t rsa -C "admin@yourisp.com" -N amahi -f /var/cache/git/.ssh/authorized_keys​
  • Push to the repository
bash code
​git remote add origin git@git.yourisp.com:test.git git push origin master​
  • Add to bottom of the configuration file
bash code
​vi /etc/gitweb.conf​
Text
​$feature{'blame'}{'default'} = [undef]; $feature{'pickaxe'}{'default'} = [undef]; $feature{'search'}{'default'} = [undef]; $feature{'grep'}{'default'} = 1; $feature{'snapshot'}{'default'} = ['tgz', 'gzip', 'zip']; $feature{'snapshot'}{'override'} = 1; $site_name = "HDA Git"; $projectroot = '/var/cache/git/'; $projects_list_description_width = 50; $git_temp = "/tmp"; $home_text = "indextext.html"; $site_footer = "indexfooter.html"; $projects_list = $projectroot; $home_link_str = "http://gitweb / git "; $stylesheet = "/git/static/gitweb.css"; $logo = "/git/static/git-logo.png"; $favicon = "/git/static/git-favicon.png"; $feature{'pathinfo'}{'default'} = [1]; $my_uri = "http://gitweb/git/"; $home_link = "http://gitweb/git/;"​
  • Create custom index.html file
bash code
​cd /var/hda/web-apps/gitweb vi html/index.html​
Text
​<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Your Page Title</title> <meta http-equiv="REFRESH" content="0;url=http://git/git/"></HEAD> <BODY> Optional page text here. </BODY> </HTML>​
  • Copy web files and set permissions
bash code
​cp -r /var/www/git/* html chown -R apache:users html​
  • Modify the web app configuration file as follows
bash code
​vi /etc/httpd/conf.d/####-gitweb.conf​
Text
​Alias /git /var/hda/web-apps/gitweb/html/ RewriteEngine On RewriteRule ^git$ git/ [R] DirectoryIndex gitweb.cgi SetEnv GITWEB_CONFIG "/etc/gitweb.conf" AddHandler cgi-script .cgi /etc/httpd/conf.d/git.conf <Directory /var/hda/web-apps/gitweb/html> RewriteEngine On RewriteBase /git/ RewriteRule ^$ gitweb.cgi [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule (.*) gitweb.cgi/$1 [QSA,L] </Directory>​
  • Restart Apache
bash code
​/etc/init.d/httpd restart​


Complete

Navigate to http://gitweb/git to browse the newly created repository.


References