Technical details about the plugin limitations
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.
User Comment : However, is it possible to be able to draw the graph using GraphViz ? The idea I have in my mind is to refactor the code and introduce an interface to support multiple renderers. That way you could write a default renderer using SVGdraw but others could write a renderer based on GraphViz and thus be able to use different formats.
Version control backend
The plugin could be enhanced to support other version control backends, 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 make sense that the Trac VC abstraction layer
provide a sort method for ordering changesets?
- User comment : Isn't
trac.versioncontrol.api.Repository.rev_older_than enough ?
You could also use trac.versioncontrol.api.Repository.get_quickjump_entries
to detect interesting entries (e.g. branches and tags). This works
for both
svn
andhg
;o). Maybe the difficult part in here is that a revision may have multiple parents. So they form a DAG (instead of linear svn layout) and it seems that Trac VCS API doesnt provide such information :o(.
- User comment : Isn't
trac.versioncontrol.api.Repository.rev_older_than enough ?
You could also use trac.versioncontrol.api.Repository.get_quickjump_entries
to detect interesting entries (e.g. branches and tags). This works
for both
- SVN changesets are integers. The changeset graphic elements are easily
rendered as the integers have a short representation (a few characters).
Hg uses wider changeset identifiers, which make them unsuitable for
display in the existing changeset graphic elements of the revtree graph.
Suggestions are welcome!
See (#3533) for a related ticket.