PSAS/ git

For new work, we are now using git, instead of Subversion. See gitweb for a list of git projects hosted on this server. (Look for repositories starting with "psas/".)

You can clone any of our git repositories without any special privileges, by using the anonymous git protocol. For example:

git clone git://

Some of our projects depend on further submodules. For instance, event-driven-fc also depends on the ziggurat submodule. To initialize it:

git submodule init
git submodule update

If you're making changes to one of these git repositories and want to be able to share your work with us, please send your preferred SSH username and an OpenSSH public key to You probably want to choose a username that matches your local username on whatever computer you usually do development work on. If you don't already have an OpenSSH public key, you can generate one with this command:

ssh-keygen -t dsa

Afterwards you can find your new public key in ~/.ssh/ (If you already had a key, you might find that it's named ~/.ssh/

Once your account is created, you need to use the git+ssh protocol to access the repositories you're working on. For example:

git clone ssh://


Creating a new git account

sudo adduser --disabled-password --shell /usr/bin/git-shell --gecos "<Full Name>" <username>
sudo addgroup <username> psas
sudo -u <username> mkdir /home/<username>/.ssh
sudo -u <username> sponge /home/<username>/.ssh/authorized_keys

Now paste the provided key and press Ctrl-D.

Creating a new git repository

First, set up the git repository on the PSAS server:

cd /git
git init --shared --bare <reponame>.git
cd <reponame>.git
touch git-daemon-export-ok

Preferably, also edit the file named "description" with a very short summary of what's in the repository.

Now we have a bare repo with nothing in it. If you don't already have a git repository, you can create one locally now:

git clone ssh://<username><reponame>

Add and commit your files.

If you already have a git repository (and a sufficiently new version of git; maybe 1.6 or so?) you can link your existing local repository to this new remote one this way:

git remote add -m master origin ssh://<username><reponame>

In either case, then you'll have to tell it (once):

git push origin master

... and now you're set.

Moving SVN to git

You can use the following commands to convert a PSAS svn repo to git:

git svn clone svn+ssh:// repo-name.git

Then you can use the commands above to push it to a new git repo and thus happily preserve old history.