Edgewall Software

Version 4 (modified by Christian Boos, 16 years ago) ( diff )

Update to latest revision

Multiple Repository Support for 0.12

This branch adds support for accessing multiple repositories inside one Trac project.

For now, there is support for the Mercurial (hg) and Subversion (direct-svnfs) type of repositories.

See:

Checkpoints:

  • r6465: initial "release" of the branch, worksforme
  • r6469: a few bug fixes

The approach is quite simple: beyond repository connectors, there's now repository providers (IRepositoryProvider components) which are responsible for make available a list of named repositories. That name can be arbitrary (in particular, it may contain '/' to denote a pseudo-hierarchy) and will be used as a prefix for any repository path. Actually, a more complete description of the approach can be found in this mail: One trac env for X repositories ?.

If the only repository known is the default one (i.e. the one defined in TracIni, section [trac] repository_...), then Trac behaves exactly as before. But IRepositoryProvider components can make other repositories available. In particular, the default RepositoryManager itself provides a list of repositories listed in a new [repositories] section in TracIni. See r6447 for more details.

TODO

  • More IRepositoryProvider components:
    • HgForestRepositoryProvider, for providing forest repositories and all sub-repositories managed by each forest
    • HgParentDirRepositoryProvider, for listing all the working copies present in a given folder
    • SvnParentDirRepositoryProvider, for listing all the Subversion repositories present in a given folder
  • currently, a default repository needs to be defined, otherwise the versioncontrol modules are disabled
  • fix AJAX query in annotate
  • extend to cached repositories
  • IRepositoryProvider must have a way to signal new content, in order to rebuild the repository name cache
Note: See TracWiki for help on using the wiki.