= Handling git repositories == Introduction This document is for developers who want to publish a git repository on the Frugalware FTP Server and on the Frugalware Gitweb Interface. == 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/`. == 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: . Update the file `.git/description` inside the repo with a short (less than 80 chars) description. . Create the file `.git/owner` inside the repo containing your name, _without_ your email address. . 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/`. == 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. . If you want CIA notification. . If you want sending mails to the `Frugalware-git` mailing list. . 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 ----