wiki:RevtreePlugin/Limitations

Version 1 (modified by eblot, 8 years ago) (diff)

Creation

Technical details about the limitations of the plugin

Several requests have been made to enhance the plugin.

This page sums up the technical limitations, and the design choices.

Could the plugin support ... ?

Images

The plugin could be enhanced to generate PNG revtree images for browsers that do not support SVG. It could, but it won't. SVG is a W3c standard, and is becoming popular.
I want to keep the plugin simple, not universal. Upgrade your web browser if it does not support SVG.

Version control backend

The plugin could be enhanced to support other version control backend, such as Hg (Mercurial). I do not plan to support other backends for now.

Support for Hg might be possible, as the plugin uses the VC-independent layer of Trac. Some issues need to be addressed, though:

  • changesets need to be ordered. The plugin uses one of the SVN changeset properties: each successive commit increases the revision number by one. It does not use the revision date for ordering changesets. This would need to be changed for Hg. Would it makes sense that the Trac VC abstraction layer provide a sort method for ordering changesets?
  • SVN changesets are integers. The changeset graphic elements are easily rendered as the integers have a short representation (few characters). Hg uses wider changeset identifiers, which make them unsuitable for being displayed in the existing changeset graphic elements of the revtree graph. Suggestions are welcomed!
  • SVN changesets properties. Although the plugin uses the Trac VC abstraction layer to access repository information, the plugin still need a direct access to the underlying SVN repository to retrieve revision properties. There is a ticket (#2545) to augment the abstraction layer with the support for revision properties which has been implemented for 0.11. Until the plugin is adapted to support this new version of Trac, this direct access to the underlying repository prevents from switching from one repository kind to another.