Telepathy uses [[git|http://git.or.cz/]]. You can browse the source code via the [[Telepathy gitweb|http://cgit.freedesktop.org/telepathy/]]. That site's "summary" links also list the URLs for both anonymous access (git://) and developer access (git+[[ssh://|ssh://]]) for individual modules. [[!toc ]] ## Checking out the source code If you want bleeding-edge code, (or if you want to help out with development of Telepathy), you can check out the source code from git. Of course, you might prefer to use our [[Source Code Tarballs|Download]]. Anybody can checkout the latest source code anonymously with a command such as the following: [[!format txt """ git clone git://anongit.freedesktop.org/telepathy/telepathy-glib """]] You can commit changes to your local repository but will not be able to push them to the central repository. **If you are a developer** with an ssh account in the `telepathy` group and would like to be able to push your changes to the central repository, please clone the main repository on the server to your public_html, to have a public repository of your own, then clone _that_ to your development machine. See "Working on an existing git repository" below. ## Help for git beginners If you are not familiar with git, these links might be useful. * See [["Using Git"|http://www.cairographics.org/cairomm/]] on the cairomm page. ## Working on an existing git repository (This workflow gives you a personal repository to point people towards for code review, and avoids the problem of accidentally pushing unreviewed changes to the central repository.) Replace the values of PROJECT, USERNAME and OTHERUSER as appropriate. [[!format txt """ # on dhansak: create your personal repository PROJECT=telepathy-glib mkdir -p ~/public_html/git cd ~/public_html/git git clone --bare git://anongit.freedesktop.org/telepathy/$PROJECT $PROJECT.git # on your laptop: check out a copy PROJECT=telepathy-glib USERNAME=foo git clone git+ssh://git.collabora.co.uk/home/$USERNAME/public_html/git/$PROJECT.git $PROJECT cd $PROJECT git remote add upstream ssh://git.freedesktop.org/telepathy/$PROJECT # if you are interested in unreviewed code published by other users, e.g. smcv: OTHERUSER=smcv git remote add smcv git+ssh://git.collabora.co.uk/git/user/$OTHERUSER/telepathy-glib.git git config remote.$OTHERUSER.tagopt --no-tags git remote update # on your laptop: do some work on a new branch, and publish it git checkout -b bug-12345 master vim something.c make check git commit -a git push --all # on your laptop: (for committers only) once your code is reviewed, merge it git checkout master git remote update upstream git merge upstream/master # this should always be a "fast-forward" merge git merge bug-12345 git push upstream master # on your laptop: (for committers only) review and merge someone else's code (e.g. smcv's bug-54321 branch) git remote update smcv gitk # and look at changes in refs/remotes/smcv/bug-54321 git checkout master git remote update upstream git merge upstream/master git merge smcv/bug-54321 git push upstream master """]] ## Setting up a shared git repository /!\ **Warning:** previous instructions have been wrong Official repositories should be requested from Freedesktop.org admins. * Set up an empty Git repo: * [[!format txt """ mkdir /srv/git.collabora.co.uk/git/project_name.git cd /srv/git.collabora.co.uk/git/project_name.git chgrp telepathy . git init --bare --shared=group """]] * Make post-update hook executable (for http support) * Edit telepathy-foo.git/config and add the commits mailing list: * [[!format txt """ [hooks] mailinglist = telepathy-commits@lists.freedesktop.org """]] * Move the old post-receive script out of the way (e.g. post-receive.orig) and replace it with a symlink to /srv/git.collabora.co.uk/hooks/post-receive