Version 9 (modified by vasilvv, 11 years ago) (diff)

fix path

Technical Information about the Git Repository


The canonical repository is on (a/k/a, accessibly via git+ssh://. Each package has its own repository in the path /git/athena.

Members of athena-commiters [sic] have smrsh shells which allow access to both git and svn.

Other Accounts

  • athenasnap: Used by debathena-root for things requiring shell access, such as fixing hooks, etc.
  • debuildsvn: Deprecated in favor of builder account.
  • builder: Used by the build server to svn up/git pull checkouts. Do not use this for committing or you will get punched in the face.


Currently, each repository has its hooks directory renamed to hooks.orig and a hooks symlink pointing at /git/athena/repository-configuration/githooks. /git/athena/repository-configuration is a clone of a repository of the same name on github. That repo should always reflect what's on drugstore. (This is a fork of the krbdev-services repository from the krb5 team, as we stole most of their hooks, and workflow.)

Hooks directory

The contents of the directory, and what they are for:

  • authors: Maps usernames to real people. Used by update hook.
  • Used by various hooks
  • krb5-rt-id: Currently unused.
  • post-receive: The master post-receive hook. It runs the notify, push, and rt hooks in turn.
  • post-receive-notify: Sends mail upon a new commit. (And possibly zephyrs?)
  • post-receive-push: Pushes to a mirror (in this case, github)
  • post-receive-rt: Does operations in RT as appropriate (currently unused)
  • ssh-as-krbsnap: Unused.
  • update: The master update hook. Prevents fast-forwards, enforces style guidelines, etc.

Hook configuration

Much of the hooks are configured by git configuration in the repository. Values we care about:

  • receive.denynonfastforwards=true
  • hooks.push-to=github
  • hooks.verbose=true
  • hooks.reponame= (repository name)
  • hooks.commit-url-prefix= name)/commit/
    • TODO: Why doesn't this use hooks.reponame?


This includes things used by hooks, etc:

  • github_id_rsa, Keypairs for mit-athena project on Github.
  • github-password: username/password for the github account
  • known_hosts: An SSH known hosts file for Github, but they move IPs too much (not currently in use)
  • ssh-to-github: The ssh command to push to Github. If you run this interactively, ssh will yell at you about permissions on the keypair. We should also rename this command.

Setting Up A New Repository For A New Package

First, go make the github repository.

git init --bare --shared=group /git/athena/packagename.git
cd /git/athena/packagename.git
mv hooks hooks.orig
ln -s /git/athena/repository-configuration/githooks hooks
git config core.sharedRepository group         #Should be set by shared=group
git config core.logAllRefUpdates true
git remote add --mirror=push github
git config gc.reflogexpire never
git config gc.reflogexpireunreachable never
git config receive.fsckObjects true
git config receive.denyNonFastForwards true     #Should be set by shared=group
git config hooks.push-to github
git config hooks.mailinglist
git config hooks.verbose true
git config hooks.reponame packagename
git config hooks.commit-url-prefix