wiki:GitRepositoryDetails

Version 1 (modified by jdreed, 11 years ago) (diff)

--

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: Used by the build server to "svn up" checkouts and things like that. Consider switching to builder.

Hooks

Currently, each repository has its hooks directory renamed to hooks.orig and a hooks symlink pointing at /git/athena/krbdev-services/githooks. 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?