[[PageOutline(2-5,Contents,pullout)]] = Ticket Changesets Plugin = == Description == The TracTicketChangesetsPlugin hooks into changeset notifications and searches commit messages for ticket references. Referenced tickets are updated with the commit message, and all concerning changesets for a ticket are presented in a separate section on ticket pages, just above the change history section. The macros `CommitMessage(repo, rev)` and `TicketChangesets(ticket)` are provided to present a commit message for a given repository and revision, and all changesets that are related to a given ticket. Console administration commands are available for resynchronizing relations between tickets and changesets. The source of this plugin is based on code provided distributed with Trac 0.12 (tracopt/ticket/commit_updater.py). The plugin works with multiple repositories. '''This plugin is not compatible with Trac 0.11''' == Bugs/Feature Requests == Existing bugs and feature requests for TracTicketChangesetsPlugin are [report:9?COMPONENT=TracTicketChangesetsPlugin here]. If you have any issues, create a [http://trac-hacks.org/newticket?component=TracTicketChangesetsPlugin&owner=mrelbe new ticket]. == Download == Download the zipped source from [download:tracticketchangesetsplugin here]. == Source == You can check out TracTicketChangesetsPlugin from [http://trac-hacks.org/svn/tracticketchangesetsplugin here] using Subversion, or [source:tracticketchangesetsplugin browse the source] with Trac. == Example == The related changesets are presented just above the ordinary change history: [[Image(ticket_changesets_box.gif)]] The plugin can be configured to present the box as initially collapsed, or hidden completely when no changesets are related to the ticket. Please see the in-built documentation for more details. Revision ranges can be presented in compact form, for example [420-422] instead of [420] [421] [422]. === Installation instructions === 1. Enable the plugin by the following in trac.ini: {{{ [components] ticketchangesets.* = enabled }}} 1. Add the section `[ticket-changesets]` to configure the behaviour: {{{ [ticket-changesets] check_perms = true collapsed = false commands.close = close closed closes fix fixed fixes commands.refs = addresses re refs references see ticket tickets compact = true hide_when_none = false notify = false resolution = fixed }}} 1. The Trac environment needs to be upgraded: {{{ trac-admin %ENV% upgrade }}} 1. Re-synchronize repositories (optional, but recommended before next step which will scan all existing commit messages): {{{ trac-admin $ENV repository resync "*&" }}} 1. Build relations between tickets and changesets: {{{ trac-admin $ENV ticket_changesets resync }}} 1. Re-format existing ticket commit messages (DANGEROUS!) a. Produce a diff-like output for your analysis, which does not affect the database, before re-formatting existing commit messages: {{{ trac-admin $ENV ticket_changesets diff > out.diff }}} Examine out.diff and assert that re-formatting is sensible before next step. a. Re-format '''(DANGEROUS!)''' {{{ trac-admin $ENV ticket_changesets reformat }}} 1. Setup hook-scripts (Windows example, does not differ from official instructions applicable to Trac 0.12): a. post-commit.cmd {{{ :: Trac 0.12 post-commit hook script for Windows :: @SET TRAC_ENV=... @SET REPOS=%1 @SET REV=%2 @trac-admin "%TRAC_ENV%" changeset added "%REPOS%" "%REV%" }}} a. post-revprop-change.cmd {{{ :: Trac 0.12 post-revprop-change hook script for Windows :: @SET TRAC_ENV=... @SET REPOS=%1 @SET REV=%2 @trac-admin "%TRAC_ENV%" changeset modified "%REPOS" "%REV%" }}} From here-on, tickets will be updated when referenced in a commit message, and the relation between tickets and revisions are automatically tracked. == Recent Changes == [[ChangeLog(tracticketchangesetsplugin, 3)]] == Author/Contributors == '''Author:''' [wiki:mrelbe] [[BR]] '''Maintainer:''' [wiki:mrelbe] [[BR]] '''Contributors:'''