Some answers here are quite outdated, because meanwhile Trac and especially its plugins have made much progress. IMO it's not necessary anymore to change to Redmine. Here's the current state of the art, especially what is maintained and useful:
Look also at the plugin recommendation site of Trac. IMO best is when you add the following plugins to a freshly installed Trac-1.0:
- SimpleMultiProjectPlugin (multiple projects in one Trac instance)
- AdvancedTicketWorkflowPlugin (own ticket states and work flow transitions like 'testing')
- TimingAndEstimationPlugin (worked hours, planned hours)
- EstimationToolsPlugin (burndown and workload chart)
- TracJsGanttPlugin (Gantt chart)
- MasterTicketsPlugin (ticket dependency)
- SubticketsPlugin (ticket hierarchy)
- ChildTicketsPlugin (parent child relationship)
- FullBlogPlugin (blog & news)
- TracTicketStatsPlugin (work flow statistics)
- AutocompleteUsersPlugin (user name autocompletion)
- UserManagerPlugin (users and roles)
- UpcomingMilestonesChartMacro (milestone date chart)
This is a good combination of all you need for good project-management. They can all be found at trac-hacks.org and plugin installation is quite easy for Trac.
The support of multiple repositories is a build-in feature of Trac itself since 0.12.
Also take a look at the upcoming Apache Bloodhound project which is build on top of Trac and is also an alternative to what I've written above.