Edgewall Software

Opened 14 years ago

Closed 14 years ago

Last modified 12 years ago

#226 closed enhancement (duplicate)

Ticket Dependencies

Reported by: jon@… Owned by: Jonas Borgström
Priority: lowest Milestone:
Component: general Version: 0.6
Severity: normal Keywords:
Cc: trac@… david.balch@…
Release Notes:
API Changes:


I don't know if this is outside the idea of the Trac being simple, but it would be nice to be able to have tickets that depend on other tickets being completed, so that you can get an idea of what needs to be done.

Attachments (1)

ticket_dependency.patch (17.2 KB ) - added by trac@… 14 years ago.
Ticket Dependecy - First patch

Download all attachments as: .zip

Change History (7)

comment:1 Changed 14 years ago by daniel

Milestone: 2.0
Priority: normallowest

This is a big change… Maybe for post-1.0.

comment:2 Changed 14 years ago by trac@…

Cc: trac@… added

I would like to get the ball rolling on this one.

I'm not sure why daniel thinks this would have to be a bug change. I think it can implementing this can be pretty staight forward.

I'll just post the basic idea of what I'm working on, feedback would be much apreciated.

DB Schema: Add a table to record dependencies:

CREATE TABLE dependencies (
        blocks int,
        dependson int,

Ticket object: Add two methods .get_blocks_list() .get_dependson_list() that return a list of Tickets "blocked by this Ticket" and a list of Tickets "this Ticket depends on" respectively.

Change the .save_changes method to check/ act on these list on status change.

UI changes: Add the required fields to display and change these dependencies.

Changed 14 years ago by trac@…

Attachment: ticket_dependency.patch added

Ticket Dependecy - First patch

comment:3 Changed 14 years ago by trac@…

I just added a patch implementnig basic Ticket dependency functionality.

I had to rework the patch quite a bit as Ticket.py has seen some major chanegs since 0.7.1

I'm still a bit puzzled about how/ why some of Ticket.py works the way it does. So I expect some things could be handled cleaner than I did in this patch. I guess the main thing is getting something that works out there and get some feedback on the progress this far.

Things that should work:

All the basic stuff should work.

  • Adding/removing/editing Tickets "the current Ticket blocks" to existing bugs.
  • Adding/removing/editing Tickets "this Ticket Depends on" to existing bugs.
  • Reverse blocking/depending i.e. If Ticket #1 one blocks Ticket #2. Ticket #2 obviously 'depends on' Ticket #1
  • Adding 'blocks'/'depends on' to new tickets.

N.B. The 'Blocks' and 'Depends On' fields only display direct dependencies, it doesn't walk up or down the dependency graph to find all dependencies.

Stuff that might work:

  • Automatic update of the database. I haven't tested, but I think it should work. (If not use the CREATE TABLE from the previous comment if you want to test).

Things that don't work/ isn't done

  • Input validation
  • Sanity checks (a Ticket can depend on non-existing Tickets, Can both depend on and block the same Ticket, etc..)
  • Act when dependencies are violated. (I.e. prevent closing when blocknig Tickets are open, reopen when depending ticket is reopened, etc).
  • Display of fancy dependency graphs
  • probably a lot more.

Some of the things from this list probably should be done before this can be useful. But for now this should give a basic idea about how this could work.

comment:4 Changed 14 years ago by anonymous

Cc: trac@… added; trac@… removed

comment:5 Changed 14 years ago by Christopher Lenz

Resolution: duplicate
Status: newclosed

This is a duplicate of #31. Take any further comments there to avoid fragmentation.

comment:6 Changed 13 years ago by Matthew Good

Milestone: 2.0

Modify Ticket

Change Properties
Set your email in Preferences
as closed The owner will remain Jonas Borgström.
The resolution will be deleted.
to The owner will be changed from Jonas Borgström to the specified user.

Add Comment

E-mail address and name can be saved in the Preferences .
Note: See TracTickets for help on using tickets.