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.

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://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.

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.

# 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:
    • 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:
    • [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