Difference between revisions of "Git and Gitweb"

From Amahi Wiki
Jump to: navigation, search
 
(3 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
{{NeedsUpdate}}
 +
 +
 
'''NOTE:'''  There is a [http://www.amahi.org/apps/gitweb one-click app] currently in ALPHA being tested.
 
'''NOTE:'''  There is a [http://www.amahi.org/apps/gitweb one-click app] currently in ALPHA being tested.
  
Line 19: Line 22:
 
<li>[[Open_Terminal_as_root|Open a terminal as root]] user and do the following:
 
<li>[[Open_Terminal_as_root|Open a terminal as root]] user and do the following:
 
<li>Install dependencies
 
<li>Install dependencies
{{Code|yum -y install git git-daemon gitweb}}</li>
+
<pre>yum -y install git git-daemon gitweb</pre></li>
 
<li>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
 
<li>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|Text=Alias /git /var/hda/web-apps/gitweb/html
+
<pre>Text=Alias /git /var/hda/web-apps/gitweb/html
 
RewriteEngine On
 
RewriteEngine On
 
RewriteRule ^git$ git/ [R]
 
RewriteRule ^git$ git/ [R]
 
DirectoryIndex gitweb.cgi
 
DirectoryIndex gitweb.cgi
 
SetEnv GITWEB_CONFIG "/etc/gitweb.conf"
 
SetEnv GITWEB_CONFIG "/etc/gitweb.conf"
AddHandler cgi-script .cgi}}</li>
+
AddHandler cgi-script .cgi</pre></li>
 
<li>Create web page to browse repository</li>
 
<li>Create web page to browse repository</li>
{{Code|cd /var/hda/web-apps/gitweb
+
<pre>cd /var/hda/web-apps/gitweb
 
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 
<html>
 
<html>
Line 38: Line 41:
 
</BODY>
 
</BODY>
 
</HTML>' > html/index.html
 
</HTML>' > html/index.html
chown apache.users html/index.html}}</li>
+
chown apache.users html/index.html</pre></li>
 
</ol>
 
</ol>
 
<li>Add user
 
<li>Add user
{{Code|useradd -U -d /var/cache/git -s /usr/libexec/git-core/git-shell git}}</li>
+
<pre>useradd -U -d /var/cache/git -s /usr/libexec/git-core/git-shell git</pre></li>
 
<li>Set directory permissions
 
<li>Set directory permissions
{{Code|cd /var/cache
+
<pre>cd /var/cache
 
chown -R git:git git
 
chown -R git:git git
chmod 755 git/}}</li>
+
chmod 755 git/</pre></li>
 
<li>Create '''/etc/init.d/git''' file and add the following
 
<li>Create '''/etc/init.d/git''' file and add the following
{{Text|Text=#!/bin/sh
+
<pre>#!/bin/sh
 
<nowiki>#</nowiki>
 
<nowiki>#</nowiki>
 
<nowiki>#</nowiki>  Startup/shutdown script for Git Daemon
 
<nowiki>#</nowiki>  Startup/shutdown script for Git Daemon
Line 108: Line 111:
 
esac
 
esac
 
   
 
   
exit $RETVAL}}</li>
+
exit $RETVAL</pre></li>
 
<li>Set init script to run
 
<li>Set init script to run
{{Code|chmod 755 /etc/init.d/git;
+
<pre>chmod 755 /etc/init.d/git;
 
/etc/init.d/git start
 
/etc/init.d/git start
/sbin/chkconfig git on}}</li>
+
/sbin/chkconfig git on</pre></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"
+
<pre>git config --global user.name "MyHDA"
git config --global user.email myhda@localhost}}</li>
+
git config --global user.email myhda@localhost</pre></li>
 
<li>Create temporary repository
 
<li>Create temporary repository
{{Code|cd /var/cache/git/
+
<pre>cd /var/cache/git/
 
git init test
 
git init test
cd test}}</li>
+
cd test</pre></li>
 
<li>Add test file and a short description
 
<li>Add test file and a short description
{{Code|echo 'test' > README
+
<pre>echo 'test' > README
 
git add README
 
git add README
git commit -a -m "initial README file"}}</li>
+
git commit -a -m "initial README file"</pre></li>
 
<li>Create local repository
 
<li>Create local repository
{{Code|cd /var/cache/git/
+
<pre>cd /var/cache/git/
 
git clone test test.git
 
git clone test test.git
 
cd test.git
 
cd test.git
git push origin master}}</li>
+
git push origin master</pre></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]
+
<pre>[gitweb]
       owner = MyHDA}}</li>
+
       owner = MyHDA</pre></li>
 
<li>Add to bottom of '''/etc/gitweb.conf''' file
 
<li>Add to bottom of '''/etc/gitweb.conf''' file
{{Text|Text=$feature{'blame'}{'default'} = [undef];
+
<pre>$feature{'blame'}{'default'} = [undef];
 
$feature{'pickaxe'}{'default'} = [undef];
 
$feature{'pickaxe'}{'default'} = [undef];
 
$feature{'search'}{'default'} = [undef];
 
$feature{'search'}{'default'} = [undef];
Line 152: Line 155:
 
$feature{'pathinfo'}{'default'} = [1];
 
$feature{'pathinfo'}{'default'} = [1];
 
$my_uri = "http://gitweb/git/";
 
$my_uri = "http://gitweb/git/";
$home_link = "http://gitweb/git/;"}}</li>
+
$home_link = "http://gitweb/git/;"</pre></li>
 
<li>Copy web files and set permissions
 
<li>Copy web files and set permissions
{{Code|cd /var/hda/web-apps/gitweb
+
<pre>d /var/hda/web-apps/gitweb
 
cp -r /var/www/git/* html
 
cp -r /var/www/git/* html
chown -R apache:users html/}}</li>
+
chown -R apache:users html/</pre></li>
 
<li>Update local repository description
 
<li>Update local repository description
{{Code|cd /var/cache/git
+
<pre>cd /var/cache/git
 
sed -i '1d' test.git​/.git/description
 
sed -i '1d' test.git​/.git/description
echo 'Test Repo' >> test.git​/.git/description}}</li>
+
echo 'Test Repo' >> test.git​/.git/description</pre></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>     
+
<pre><Directory /var/hda/web-apps/gitweb/html>     
 
       RewriteEngine On
 
       RewriteEngine On
 
       RewriteBase /git/
 
       RewriteBase /git/
Line 169: Line 172:
 
       RewriteCond %{REQUEST_FILENAME} !-d
 
       RewriteCond %{REQUEST_FILENAME} !-d
 
       RewriteRule (.*) gitweb.cgi/$1  [QSA,L]
 
       RewriteRule (.*) gitweb.cgi/$1  [QSA,L]
</Directory>}}</li>
+
</Directory></pre></li>
 
<li>Update permissions, remove temporary repository, and restart web server
 
<li>Update permissions, remove temporary repository, and restart web server
{{Code|chown -R git.git /var/cache/git
+
<pre>chown -R git.git /var/cache/git
 
rm -rf /var/cache/git/test
 
rm -rf /var/cache/git/test
/etc/init.d/httpd restart}}</li>
+
/etc/init.d/httpd restart</pre></li>
 
</ul>
 
</ul>
  
Line 181: Line 184:
 
==Optional==
 
==Optional==
 
You can add the Amahi repo by doing the following:
 
You can add the Amahi repo by doing the following:
{{Code|cd /var/cache/git
+
<pre>cd /var/cache/git
git clone git://git.amahi.org/amahi.git}}
+
git clone git://git.amahi.org/amahi.git</pre>
  
 
==References==
 
==References==

Latest revision as of 17:00, 9 January 2021

Msgbox.update.png Update Needed
The contents of this page have become outdated or irrelevant. Please consider updating it.


NOTE: There is a one-click app currently in ALPHA being tested.

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)
    1. From the Dashboard main page, select Apps at the top.
    2. Choose Webapps
    3. Select New Web App button at the bottom
    4. Enter gitweb for the Name (ensure the path reflects the name correctly)
    5. Choose Create
    6. Open a terminal as root user and do the following:
    7. Install dependencies
      yum -y install git git-daemon gitweb
    8. 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
    9. Create web page to browse repository
    10. 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
  • Add user
    useradd -U -d /var/cache/git -s /usr/libexec/git-core/git-shell git
  • Set directory permissions
    cd /var/cache
    chown -R git:git git
    chmod 755 git/
  • Create /etc/init.d/git file and add the following
    #!/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
    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)
    git config --global user.name "MyHDA"
    git config --global user.email myhda@localhost
  • Create temporary repository
    cd /var/cache/git/
    git init test
    cd test
  • Add test file and a short description
    echo 'test' > README
    git add README
    git commit -a -m "initial README file"
  • Create local repository
    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)
    [gitweb]
           owner = MyHDA
  • Add to bottom of /etc/gitweb.conf file
    $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
    d /var/hda/web-apps/gitweb
    cp -r /var/www/git/* html
    chown -R apache:users html/
  • Update local repository description
    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
    <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
    chown -R git.git /var/cache/git
    rm -rf /var/cache/git/test
    /etc/init.d/httpd restart

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:

cd /var/cache/git
git clone git://git.amahi.org/amahi.git

References

Hosting your own Git Repository on Fedora 12

Contribute Code