wiki:GitRepositoryDetails

Version 10 (modified by vasilvv, 8 years ago) (diff)

Script is now in git

Technical Information about the Git Repository

Hosting

The canonical repository is on drugstore.mit.edu (a/k/a git.mit.edu), 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.

Hooks

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.
  • hookutils.py: 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.mailinglist=source-commits@mit.edu
  • hooks.verbose=true
  • hooks.reponame= (repository name)
  • hooks.commit-url-prefix=https://github.com/mit-athena/(repository name)/commit/
    • TODO: Why doesn't this use hooks.reponame?

/git/athena/private

This includes things used by hooks, etc:

  • github_id_rsa, github_id_rsa.pub: 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

Use /git/athena/repository-configuration/bin/create-repo.