Git and Gitweb
From Amahi Wiki
Work In Progress | |
---|---|
This article is currently undergoing major expansion or restructuring. You are welcome to assist by editing it as well. If this article has not been edited in several days, please remove this template. |
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.
This tutorial will show you how to install, create a repo, and browse that repo on your HDA.
NOTE: Tested on Fedora 14.
Setup
- Create web app (Advanced Settings must be enabled on HDA)
- From the Dashboard main page, select Apps at the top.
- Choose Webapps
- Select New Web App button at the bottom
- Enter gitweb for the Name (ensure the path reflects the name correctly)
- Choose Create
- Open a terminal as root user and do the following:
- Install dependencies
bash code yum -y install git git-daemon gitweb
- Look for the ####-gitweb.conf in /etc/httpd/conf.d (#### is some number, i.e. 1000) file and open it in your favorite editor. Add text after ServerAlias line
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
- Restart web server to enable the changes
bash code /etc/init.d/httpd restart;
- Create web page to browse repository
bash code |
---|
cd /var/hda/web-apps/gitweb echo '<!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>' > html/index.html chown apache.users html/index.html
|
bash code |
---|
useradd -U -d /var/cache/git -s /usr/libexec/git-core/git-shell git
|
bash code |
---|
cd /var/cache chown -R git:git git chmod 755 git
|
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/
|
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|stop|restart|status}" exit 3 esac exit $RETVAL
|
bash code |
---|
chmod 755 /etc/init.d/git; chkconfig git on service git start
|
Text |
---|
<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>
|
bash code |
---|
cd /var/cache/git/ mkdir test cd test git init chown -R git:git ../test/
|
bash code |
---|
cd /var/cache/git/test/ echo "test test repo" > description
|
Text |
---|
[gitweb] owner = Your Name
|
bash code |
---|
mkdir ~/test cd ~/test && git init echo 'test' > README git add README git commit -m "initial README file"
|
bash code |
---|
ssh-keygen -t rsa -C "user@yourisp.com" -N amahi -f /var/cache/git/.ssh/authorized_keys
|
bash code |
---|
git remote add origin user@hda.home.com:test git push origin master
|
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/;"
|
bash code |
---|
cp -r /var/www/git/* html chown -R apache:users html
|
Complete
That is it. Navigate to http://gitweb/git to browse the newly created repository.