1. Introduction

This document is for developers who want to publish a git repository on the Frugalware FTP Server and on the Frugalware Gitweb Interface.

2. Location of the repository

Since a repository consists of plain files, we can and should place them on the ftp server (/home/ftp). To prevent further problems, always use the server name "git.frugalware.org", currently it's an alias of genesis.frugalware.org.

First decide if it's a personal repository or a team one. For example if you create a repository to update to a newer python version, then probably you will do all the work, create it under /pub/other/people/nick/reponame. Simply create a dir, issue git init and push at least one commit to there.

If you want to allow others to push to your repo, then you want to allow them to lock your repo. This requires

chmod g+w .git

Now anyone can git clone it, using a full mirror, for example ftp://ftp12.frugalware.org/mirrors/ftp.frugalware.org/pub/.

3. Registering for the gitweb interface

If the repository is a team one, then create it under /pub/other. In this case probably you want the gitweb interface, too. To use it:

  1. Update the file .git/description inside the repo with a short (less than 80 chars) description.

  2. Create the file .git/owner inside the repo containing your name, without your email address.

  3. Push a relative symlink to the homepage-ng repository, see the existing ones as a reference.

After some time (a maximum of 30 minutes) it should appear at http://git.frugalware.org/.

4. Enabling hooks for your repository

Currently you need hooks for the following reasons: . If you don't use bare repositories, then the content outside .git won't be updated automatically, you need a hook to do so.

  1. If you want CIA notification.

  2. If you want sending mails to the Frugalware-git mailing list.

  3. If you want to let other be able to clone your repository via dumb protocols like http or rsync. (This means that if you disable this hook, it won't be accessible anonymously!)

For the last one:

chmod +x .git/hooks/post-update

For the others:

ln -sf /home/ftp/pub/other/git-hooks/git-hooks.py .git/hooks/post-receive