Writing Good Commit Messages

Rule zero: “good” is defined by the standards of the project you're on. Have a look at what the existing messages look like, and try to emulate that first before doing anything else.

Having said that, here are some things that will help your commit messages be useful later:

An Example

commit 842e6c5f41f6387781fcc84b59fac194f52990c7
Author: Owen Jacobson <owen.jacobson@grimoire.ca>
Date:   Fri Feb 1 16:51:31 2013 -0500

    DS-37: Add support for privileges, and create a default privileged user.

    This change gives each user a (possibly empty) set of privileges. Privileges
    are mediated by roles in the following ways:

    * Each user is a member of zero or more roles.
    * Each role implies membership in zero or more roles. If role A implies role
      B, then a member of role A is also a transitive member of role B. This
      relationship is transitive: if A implies B and B implies C, then A implies
      C. This graph should not be cyclic, but it's harmless if it is.
    * Each role grants zero or more privileges.

    A user's privileges are the union of all privileges of all roles the user is a
    member of, either directly or transitively.

    Obviously, a role that implies no other roles and grants no priveleges is
    meaningless to the authorization system. This may be useful for "advisory"
    roles meant for human consumption.

    This also introduces a user with the semi-magical name '*admin' (chosen
    because asterisks cannot collide with player-chosen usernames), and the group
    '*superuser' that is intended to hold all privileges. No privileges are yet