Better issue tracker API
Here are a few ideas for an improved issue tracker API. These suggestions were first posted in the forum 05 December 2011.
Create branch from ticket
I was surprised that I could not create a branch from a list of tickets. Instead I have to use a branch name convension to link my branch to a ticket. It should be trivial to extend the extension API with a "load tickets" method and present the list of tickets when creating a branch. How to select the tickets to be shown could be a matter of extension configuration. This could be made even better if the API could make the extension provide a list of filters to choose from.
It is not that it is a big issue to use the branch naming convension, but it would allow a more smooth workflow if the list of tickets was integrated with branch creation.
Two way state synchronization
I was also surprised that the extension seems to be a one way system with no support for adding states or comments to the ticketing system.
I had expected to find a "hook" to branch switching or creation. That way it would have been possible to change ticket state from say "new" to "open".
If the ticket properties, especially state, were synchronized with Plastic attributes, it would provide a very convenient way of filtering branches when integrating completed tasks for a build.
If there was a "hook" for changeset comments, changeset comments could also be added to the ticket comments. This would provide possibilities for a detailed change log.
Two way states and events on commits, branch switches, etc. is what I miss the most.
I would benefit performance if every branch explorer refresh didn't caused a complete loading of all issue tracker tasks in view. You might expect the branch explorer to attempt a refresh if you hit the refresh button, but it the refresh fails, for example if you are offline or the ticket server for some reason is not available, then all your ticket titles disappear. This is a problem if you have adopted a ticket id branch naming scheme. It would be better, if Plastic cached tickets and only replaced titles if a new was actually loaded. Also, why is the extension asked to load a ticket both by the branch explorer and when clicking on a branch?
I do however realize that the extension could do such caching by itself, but it would be easier to develop extensions if such behavior was implemented in the calling system.
I found the repository to ticket system project mapping a little clumpsy in the API. E.g. when refreshing the branch explorer, the extension is asked to load tickets for all visible branches, but with the empty string as repository name. Only when clicking on a branch, the repository name is provided. There is probably an explanation, but it made it hard to map repositories with projects in the ticketing system. This is a problem for ticketing systems like YouTrack, where the project name (in short form) is part of the ticket ID and IDs within projects are sequential (i.e. non-unique globally).
In Plastic preferences you can setup auto-comments. You can choose between user name and date. This is almost entirely useless since that information is already baked easily available.
When using build servers like TeamCity, you get some nice links to your ticketing system if you refer to ticket id's in the comments. A typical workflow is making a solving a bunch of tickets and then integrating the branches in a build branch that the build server will use to generate a new build. In the process of integrating branches, it would be helpful if the comments automatically the ticket ids, since this would make a full circle between the VCS, Build server and ticketing system. Manully entering these comments is tidious and error prone, since it is often only a matter of repeating branch names and ticket titles.
It would be nice if the "custom" auto-comment formatter was extended more tags. Most obvious are branch name, ticket title, ticket id, ticket description.
Creating branches from tickets already there! :-)
All good ideas.
While most of us prefer a branching convention, definitely creating a branch from a list of tickets looks like the way to go.