Gitolite

From Fixme.ch
Revision as of 09:36, 12 September 2013 by Rorist (Talk | contribs) (Deploy)

Jump to: navigation, search

Goal

Usage

  • Access a repository like this:
 git clone ssh://gitolite@git.fixme.ch:1337/$example
  • List repositories you can access
 ssh gitolite@foo.fixme.ch -p 1337

Administration

  • Ask The following people to access the gitolite admin :
       RW     =   nemen
       RW     =   malik
       RW     =   rorist
       RW     =   francois
       RW     =   anael
       RW     =   crazygolem
       RW     =   prosouth
       RW     =   artphi

Create a repo

  • Get the gitolite admin
 git clone ssh://gitolite@git.fixme.ch:1337/gitolite-admin
  • Edit conf/gitolite.conf, add your repo and permissions
repo MySuperProject
    R = @all     #pull
    RW = myuser  #push
    RW+ = myuser #rewrite history
  • Commit and push to foo
git commit -am "Add XXX repo"
git push origin master

Add user

  • Ask the user to create an ssh key and to give the public key
ssh-keygen
cat ~/.ssh/id_rsa.pub
  • Create a new file for the key in keydir
echo 'ssh-rsa AAA[...]' > keydir/name@machine.pub
git add keydir/name@machine.pub
git commit -am "new key for name"
git push origin master

Tip

If you don't want to specify the port every time you use ssh/git, you can add the host to your ~/.ssh/config:

 Host git.fixme.ch
     Port 1337

Deploy

  • There is a git hook to publish most of the application in production.
  • The deploy hook is located at /home/git/hooks/deploy.sh in the Internal_Server.
  • You must add a post-receive hook in your project in a file /home/git/repositories/yourproject/hooks/post-receive with the following content:
DIR=/path/to/project #example: /var/www/foo/htdocs
APP=user-to-chown-to #example: www-data
/home/git/hooks/deploy.sh $APP $DIR
  • Permissions fix for the hooks and repo
chmod +x /home/git/repositories/yourproject/hooks/post-receive
chown -R gitolite:$APP /path/to/project
find -type f -exec chmod 640 /path/to/project \;
find -type d -exec chmod 750 /path/to/project \;
  • It's also a good thing to have a check of the database when you launch the application, and automatically create it if it doesn't yet exist.

How to use git ?

If you come from svn, forget all that you have learnt, and start from scratch. A good start would be to do the http://git-scm.com/ tutorial. Some good ressources to learn git includes:

See also