Per-project issue ID (with project key)¶
The ISSUE-id plugin adds support for a new style of issue IDs to Redmine. With this plugin issue ID can consist of a special project key (e.g., “ISSUE”) and a per-project issue number (which starts from 1 for each project). In other words, issue IDs can look like #ISSUE-1, #ISSUE-2, #ISSUE-3 and so on.
The similar ID style is used by most major Redmine competitors, such as JIRA of Atlassian.
Disclaimer¶
Currently, the goal is to have an alternative issue ID in Redmine and it is not no way to replace the native ID! So with this plugin you will see and will be able to use both IDs.
As the issue ID is used very intensively by Redmine I was not able to replace all and every legacy ID yet. And it was not, actually, the goal to. At the moment, it is important to see, what problems can be raised by this change, and, in this case, the less changes are the better.
Caution¶
The ISSUE-id plugin provides its unique feature by hardly intruding into Redmine’s functionality. The fact, that it works fine, is quite surprising...
This means, that any new version of Redmine can potentially come with changes, which can cause this plugin and/or Redmine itself to fail!
Such information is going to be published on the overview page of this project.
While I can check, whether the plugin works fine with the pure Redmine, I can’t be sure, that other Redmine plugins do not conflict with ISSUE-id!
I tested this plugin on installations having all my other plugins installed and found no conflicts with them so far.
If you are a developer of a Redmine plugin, you can make it compatible with ISSUE-id using the following coding guidelines.
Configuration¶
Issue keys can not be same for different projects, but can be same for a project and its subprojects. This can be controlled with the only plugin’s configuration option, which can be found in Administration → Plugins → ISSUE-id → Configure:
If this option is checked, a project will be able to share its issue key with subprojects.
Migrating to new issue IDs¶
Generally, all you need to migrate your issues to the new format is to specify an issue key in your project settings:
However, there is a nuance related to the issue key sharing option:
Upon migration issues of a project get sequent numbers according to their legacy issue IDs. That is, the original order will be preserved. However, if later you add the same issue key to, e.g., a project’s subproject, its issues will get next sequent numbers.
For example:
- If project A has issues #34, #67 and #98, new issue IDs will be #A-1, #A-2 and #A-3 correspondingly.
- If later you use the same issue key for subproject AB, which has issues #23 and #78, new issue IDs will be #A-4 and #A-5.
Not a big deal, but if you want the order of new issue IDs to inherit the order of old issue IDs, i.e., to get #A-2, #A-3 and #A-5 for project A and #A-1 and #A-4 for project AB, you need to migrate all future #A-* issues at once.
So here is how you can do this:
- If any of subprojects at any depth are going to have different issue keys, migrate them first!
- Then choose the most parent project in the hierarchy and check the “Use this issue key for all available subprojects” option, when specifying the issue key for it!
This way the plugin will first register the new issue key in all subprojects, which do not have the issue key yet, and then migrate all issues of all projects, which got this new issue key, at once.
Limitations related to moved issues¶
The ISSUE-id-like functionality was requested for Redmine for a long time (see #74, #282, #538, #1926, #3843, #5765, #6642, #6884, #7873 and #8039). The main reasons for not including this functionality into the core always were support for issue moving and problems related to this feature.
The ISSUE-id plugin does not resolve all these problems (it just can’t do this)! And you should consider this, when using this plugin!
So, what happens, when you move an issue?
- A moved issue always gets new ID (if the project key is changed)!
- The old issue id gets saved into a special “backup” table.
- This backup table will be checked in some cases, e.g., when an old issue id is used in URL.
- When an old issue ID is used in URL, the user will be automatically redirected to the URL with the new issue ID.
- In most other cases the old issue ID won’t work!
Installation¶
To install this plugin do:
- Copy
issue_id
directory to:#{RAILS_ROOT}/plugins
- Run:
rake redmine:plugins:migrate RAILS_ENV=production
- Restart Redmine