Edgewall Software

Version 13 (modified by Remy Blank, 13 years ago) ( diff )

Removed commas also in refs, and simplified formatting.

Commit Ticket Updater

Description

The Commit Ticket Updater is an optional component which makes Trac react on keywords and ticket references found in commit log message. Referenced tickets get a new comment linking to the changeset and depending on the presence of appropriate keywords (like closed, fixed, reopened, etc.) the ticket status will be updated.

Hooks

That role was fulfilled by the trac-post-commit-hook for Subversion and previous versions of Trac (up to 0.11), but starting with Trac 0.12 and multiple repository support, a more general notification solution has been adopted.

The post-commit hooks now should simply use trac-admin to notify the TracEnvironment that a changeset has been added or modified. See TracRepositoryAdmin#ExplicitSync for more details. This works for any kind of VersionControlSystem supported by Trac and can notify that information to any kind of listener, not only the commit ticket updater (see TracDev/ApiChanges/0.12#IRepositoryChangeListener).

Location

The CommitTicketUpdater component lives in source:trunk/tracopt/ticket/commit_updater.py (see it) and is maintained alongside the Trac core. It's included with every Trac installation as a plugin, but is not enabled by default because it's rooted in the tracopt. packages and not in trac.. Therefore it needs to be explicitly activated (e.g. trough the Admin interface).

Enable

  1. Trough the Admin interface (admin/general/plugin), enable: tracopt.ticket.commit_updater.* modules
    1. CommitTicketUpdater (tracopt.ticket.commit_updater.*)

  2. alternativally editing trac.ini file, add the following line at the [components] section:
    tracopt.ticket.commit_updater.committicketreferencemacro = enabled
    tracopt.ticket.commit_updater.committicketupdater = enabled
    

Configure

[ticket]
commit_ticket_update_envelope = []
commit_ticket_update_commands.close =
commit_ticket_update_commands.refs = <ALL>
commit_ticket_update_check_perms = true
commit_ticket_update_notify = true

Where,

  1. commit_ticket_update_envelope sets the required commands to be enclosed in an envelope.
    • Must be empty not to require an envelope;
    • or contain two characters. For example, if set to "[]", then commands must be in the form of [closes #4].

  2. commit_ticket_update_commands.close: has a space-separated list, whit commands that close tickets.
    • Default values to close a ticket: close closed closes fix fixed fixes

  3. commit_ticket_update_commands.refs: has a space-separated list, whit commands that add a reference to tickets.
    • Default values to reference a ticket: addresses re references refs see
    • If set to the special value <ALL>, all tickets referenced by the message will get a reference to the changeset.

  4. commit_ticket_update_check_perms when true checks that the committer has permission to perform the requested operations on the referenced tickets
    • Values: true, false

  5. commit_ticket_update_notify, when true send ticket change notification when updating a ticket.
    • Values: true, false

Usage

The basic syntax is of the form [command] [ticketreference]. A colon between the command and the ticket reference is allowed. The ticketreference also allows to list multiple ticket numbers separated by spaces and/or comma. The word 'and' is also allowed between ticket numbers.

You can optionally refer to tickets with the following words

  • ticket, issue, bug

Examples (note: not verified!):

  • close #10
  • closed: #10
  • closes ticket #10
  • closes ticket:10
  • fixes #10
  • fixes bug: #10
  • see issue #5
  • references #5, #6
  • fixes bug #10 and #11
Note: See TracWiki for help on using the wiki.