* Provides GIT repositories to the members* This is part of the [[Internal_ServerCategory:Services]]* Ask [[User:gcmalloc{{warning|gcmalloc]], This project is now deprecated.}}{{warning| Gitolite is now in read-only mode as we are migrating to [[Userhttp:Nemen|Nemen]//gogs.io/ Gogs], . Our Gogs instance is available at https://git.fixme.ch/. See [[User:Rorist|RoristGit]] or ask [[User:Francois|Francoisdgellow]] for more informations.}} == Goal ==* Provides GIT repositories to access the gitolite adminmembers.* https://github.com/sitaramc/gitolite/wiki
== Usage ==
* Gitolite adminAccess a repository like this: edit and push 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 this repositoryaccess 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
* Access repository like this: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 clone 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/gitoliteid_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 <code>/home/git/hooks/deploy.sh</code> in the [[Internal_Server]].* You must add a <code>post-receive</code> hook in your project in a file <code>/home/git/repositories/yourproject/hooks/post-receive</code> 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 gitolite:gitolite /home/git/repositories/yourproject/hooks/post-receive chown -R gitolite:$APP /path/to/project find /path/to/project -type f -exec chmod 640 {} \; find /path/to/project -type d -exec chmod 750 {} \;* 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:* http://ftp.newartisans.com/pub/git.from.bottom.up.pdf* http://eagain.net/articles/git-for-computer-scientists/ == See also ==* [[Git_talk]]