Difference between revisions of "Git and Gitweb"
From Amahi Wiki
(→Setup) |
(→Setup) |
||
Line 110: | Line 110: | ||
<li>Set init script to run | <li>Set init script to run | ||
{{Code|chmod 755 /etc/init.d/git; | {{Code|chmod 755 /etc/init.d/git; | ||
− | + | /etc/init.d/git start | |
− | /etc/init.d/git start}}</li> | + | /sbin/chkconfig git on}}</li> |
− | <li>Set User information (change '''user.name''' and '''user.email''' accordingly) | + | <li>Set User information (change '''user.name''' and '''user.email''' accordingly) |
{{Code|git config --global user.name "MyHDA" | {{Code|git config --global user.name "MyHDA" | ||
− | git config --global user.email myhda@localhost}} | + | git config --global user.email myhda@localhost}}</li> |
− | <li>Create repository | + | <li>Create temporary repository |
{{Code|cd /var/cache/git/ | {{Code|cd /var/cache/git/ | ||
− | + | git init test | |
− | cd test | + | cd test}}</li> |
− | |||
<li>Add test file and a short description | <li>Add test file and a short description | ||
{{Code|echo 'test' > README | {{Code|echo 'test' > README | ||
git add README | git add README | ||
− | git commit -a -m "initial README file" | + | git commit -a -m "initial README file"}}</li> |
− | + | <li>Create local repository | |
− | + | {{Code|cd /var/cache/git/ | |
− | + | git clone test test.git | |
+ | cd test.git | ||
+ | git push origin master}}</li> | ||
<li>Edit '''/var/cache/git/test/.git/config''' and add the following at the bottom (change '''MyHDA''' as desired) | <li>Edit '''/var/cache/git/test/.git/config''' and add the following at the bottom (change '''MyHDA''' as desired) | ||
{{Text|Text=[gitweb] | {{Text|Text=[gitweb] | ||
Line 155: | Line 156: | ||
cp -r /var/www/git/* html | cp -r /var/www/git/* html | ||
chown -R apache:users html/}}</li> | chown -R apache:users html/}}</li> | ||
+ | <li>Update local repository description | ||
+ | {{Code|cd /var/cache/git | ||
+ | sed -i '1d' test.git/.git/description | ||
+ | echo 'Test Repo' >> test.git/.git/description}}</li> | ||
<li>Edit '''/etc/httpd/conf.d/git.conf''' and replace with this text | <li>Edit '''/etc/httpd/conf.d/git.conf''' and replace with this text | ||
{{Text|Text=<Directory /var/hda/web-apps/gitweb/html> | {{Text|Text=<Directory /var/hda/web-apps/gitweb/html> | ||
Line 164: | Line 169: | ||
RewriteRule (.*) gitweb.cgi/$1 [QSA,L] | RewriteRule (.*) gitweb.cgi/$1 [QSA,L] | ||
</Directory>}}</li> | </Directory>}}</li> | ||
− | <li>Update permissions and restart web server | + | <li>Update permissions, remove temporary repository, and restart web server |
{{Code|chown -R git.git /var/cache/git | {{Code|chown -R git.git /var/cache/git | ||
+ | rm -rf /var/cache/git/test | ||
/etc/init.d/httpd restart}}</li> | /etc/init.d/httpd restart}}</li> | ||
</ul> | </ul> |
Revision as of 04:41, 17 March 2012
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.
Contents
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
- Create web page to browse repository
- 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 /etc/init.d/git file and add the following
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
- Set init script to run
bash code chmod 755 /etc/init.d/git; /etc/init.d/git start /sbin/chkconfig git on
- Set User information (change user.name and user.email accordingly)
bash code git config --global user.name "MyHDA" git config --global user.email myhda@localhost
- Create temporary repository
bash code cd /var/cache/git/ git init test cd test
- Add test file and a short description
bash code echo 'test' > README git add README git commit -a -m "initial README file"
- Create local repository
bash code cd /var/cache/git/ git clone test test.git cd test.git git push origin master
- Edit /var/cache/git/test/.git/config and add the following at the bottom (change MyHDA as desired)
Text [gitweb] owner = MyHDA
- Add to bottom of /etc/gitweb.conf file
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/;"
- Copy web files and set permissions
bash code cd /var/hda/web-apps/gitweb cp -r /var/www/git/* html chown -R apache:users html/
- Update local repository description
bash code cd /var/cache/git sed -i '1d' test.git/.git/description echo 'Test Repo' >> test.git/.git/description
- Edit /etc/httpd/conf.d/git.conf and replace with this text
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>
- Update permissions, remove temporary repository, and restart web server
bash code chown -R git.git /var/cache/git rm -rf /var/cache/git/test /etc/init.d/httpd restart
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://gitweb/git/"></HEAD> <BODY> Optional page text here. </BODY> </HTML>' > html/index.html chown apache.users html/index.html
|
Complete
That is it. Navigate to http://gitweb/git to browse the newly created repository.
Optional
You can add the Amahi repo by doing the following:
bash code |
---|
cd /var/cache/git git clone git://git.amahi.org/amahi.git
|