Source Code Repository
Telepathy uses git.
You can browse the source code via the Telepathy gitweb. That site's "summary" links also list the URLs for both anonymous access (git://) and developer access (git+ssh://) for individual modules.
Contents
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.
Anybody can checkout the latest source code anonymously with a command such as the following:
git clone git://git.collabora.co.uk/git/telepathy-glib.git
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 account (if your ssh key has been added) and would like to be able to push your changes to the central repository, you should use a command such as the following to checkout the latest source code:
git clone git+ssh://git.collabora.co.uk/git/telepathy-glib.git
Help for git beginners
If you are not familiar with git, these links might be useful.
* See "Using Git" on the cairomm page.
Working on an existing git repository
This is smcv's recommended workflow, to avoid accidentally pushing unreviewed changes to the main repository! Replace telepathy-glib with the project name and foo with your username.
# create your personal repository on dhansak foo@dhansak:~$ mkdir -p ~/public_html/git foo@dhansak:~$ cd ~/public_html/git foo@dhansak:~/public_html/git$ git clone --bare /srv/git.collabora.co.uk/git/telepathy-glib.git telepathy-glib-foo.git # check out a copy on your laptop foo@laptop:~/src$ git clone git+ssh://git.collabora.co.uk/home/foo/public_html/git/telepathy-glib-foo.git telepathy-glib foo@laptop:~/src$ cd telepathy-glib foo@laptop:~/src/telepathy-glib$ git remote add upstream git+ssh://git.collabora.co.uk/git/telepathy-glib.git # if you are interested in unreviewed code published by other users, e.g. smcv: foo@laptop:~/src/telepathy-glib$ git remote add smcv git+ssh://git.collabora.co.uk/git/user/smcv/telepathy-glib-smcv.git foo@laptop:~/src/telepathy-glib$ git remote update # do some work on a new branch, and publish it foo@laptop:~/src/telepathy-glib$ git checkout -b bug-12345 master foo@laptop:~/src/telepathy-glib$ vim something.c foo@laptop:~/src/telepathy-glib$ make check foo@laptop:~/src/telepathy-glib$ git commit -a foo@laptop:~/src/telepathy-glib$ git push --all # (for committers only) once your code is reviewed, merge it foo@laptop:~/src/telepathy-glib$ git checkout master foo@laptop:~/src/telepathy-glib$ git remote update upstream foo@laptop:~/src/telepathy-glib$ git merge upstream/master foo@laptop:~/src/telepathy-glib$ git merge bug-12345 foo@laptop:~/src/telepathy-glib$ git push upstream master:master # (for committers only) review and merge someone else's code (e.g. smcv's bug-54321 branch) foo@laptop:~/src/telepathy-glib$ git remote update smcv foo@laptop:~/src/telepathy-glib$ gitk # and look at changes in refs/remotes/smcv/bug-54321 foo@laptop:~/src/telepathy-glib$ git checkout master foo@laptop:~/src/telepathy-glib$ git remote update upstream foo@laptop:~/src/telepathy-glib$ git merge upstream/master foo@laptop:~/src/telepathy-glib$ git merge smcv/bug-54321 foo@laptop:~/src/telepathy-glib$ git push upstream master:master
Seting up a shared git repository
Make a bare repository in /srv/git.collabora.co.uk/git called <project name>.git containing your project
- Make the repository group writable, g+sx and don't allow non-fastforwarding pushes by running (can be done safely on existing repositories):
git init --shared=group
- Change the group appropriately - the telepathy group is usually the right one:
chgrp -R telepathy telepathy-foo.git
- Make post-update hook executable (for http support)
- Edit telepathy-foo.git/config and add the commits mailing list:
[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

