Table of Contents
Format of fixedBugsList.txt
Before generating the release notes, you must produce a list of issues which were fixed by that release and not by any previous release. The list is a text file named
${relnotes.src.dir}/${release.version}-relnotes/fixedBugsList.txt
The relnotes.src.dir and release.version variables are the values that you will specify when you run the genrelnotes target. For instance,
/Users/me/junk/10.12.1.1-relnotes/fixedBugsList.txt
The fixedBugsList.txt file is a series of entries, which have the following form...
--- ${jira.id} ${summary.line} ${release.version} ${detailed.release.note.id}
...where jira.id is the the DERBY-NNNN id, summary.line is the bug's one line summary, and release.version is the release you are producing.
For bugs which DON'T have a detailed release note, detailed.release.note.id is the literal string "null". For a bug which has a detailed release note, detailed.release.note.id is the attachment number of the detailed release note. For instance, if the link to the detailed release note is...
https://issues.apache.org/jira/secure/attachment/12745964/releaseNote.html
...then detailed.release.note.id is 12745964. Here is an abbreviated fixedBugsList.txt file:
--- DERBY-6807 XXE attack possible by using XmlVTI and the XML datatype 10.12.1.1 12745964 --- DERBY-6801 Implement MessageUtils class so client and server can share message argument encoding/decoding 10.12.1.1 null
Query to Produce the List of Fixed Bugs
The first step in constructing fixedBugsList.txt is to create a JIRA report which lists the bugs fixed by the release. Use JIRA's advanced search feature to specify a JQL query. Here is the JQL query used for release 10.12.1.1:
project = DERBY AND resolution = fixed AND component not in ( Test ) AND fixversion in ("10.12.1.1") and fixversion not in ( "10.11.1.1", "10.10.2.0", "10.10.1.1", "10.9.1.0", "10.8.2.2", "10.8.1.2", "10.7.1.1", "10.6.2.1", "10.6.1.0", "10.5.3.0", "10.5.2.0", "10.5.1.1", "10.4.2.0", "10.4.1.3", "10.3.2.1" )
You can probably leave off the clause which begins with "and fixversion not in" since we don't backport a lot of fixes to old branches.
When you execute that search query, it will produce a report. Now you need to export that report. Narrow the list of selected columns down to just "Key", "Summary", and "Issue and fix info". Then export the report as "CSV (Current fields)". Here is an abbreviated CSV-formatted report for 10.12.1.1:
Issue key,Issue id,Parent id,Summary,Custom field (Issue & fix info),Custom field (Issue & fix info) DERBY-6829,12850774,,Document the simpleJson optional tool and the SimpleJsonVTI.,, DERBY-6825,12843254,,Add basic JSON support to Derby.,, DERBY-6824,12842748,12757165,Move ShutdownException into shared code area,, DERBY-6820,12841201,12827400,Improve error handling in XmlVTI,, DERBY-6811,12833163,,Tasks for producing a 10.12.1 release,, DERBY-6807,12827400,,XXE attack possible by using XmlVTI and the XML datatype,Patch Available,Release Note Needed DERBY-6801,12822878,12757165,Implement MessageUtils class so client and server can share message argument encoding/decoding,, DERBY-6737,12741501,,CLOB retrieve exceptions after moving cursor around,Repro attached, DERBY-6733,12740340,,Implement an MBean for monitoring caches,, DERBY-6730,12739878,,Cannot create a Lucene index if a key column's name is case-sensitive,Patch Available,Workaround attached DERBY-6724,12738395,,NPE if insert statement needs recompilation after having fired a trigger,Repro attached,
Now you need to manually reformat that report into a fixedBugsList.txt file. This is straightforward for bugs without detailed release notes. Bugs with detailed release notes can be spotted by looking for the text "Release Note Needed" in the last column. For those bugs, you need to look up the attachment id of the latest releaseNote.html file attached to the issue.
Here is the reformatted fixedBugsList.txt file corresponding to the abbreviated CSV-formatted report for 10.12.1.1:
--- DERBY-6829 Document the simpleJson optional tool and the SimpleJsonVTI. 10.12.1.1 null --- DERBY-6825 Add basic JSON support to Derby. 10.12.1.1 null --- DERBY-6824 Move ShutdownException into shared code area 10.12.1.1 null --- DERBY-6820 Improve error handling in XmlVTI 10.12.1.1 null --- DERBY-6811 Tasks for producing a 10.12.1 release 10.12.1.1 null --- DERBY-6807 XXE attack possible by using XmlVTI and the XML datatype 10.12.1.1 12745964 --- DERBY-6801 Implement MessageUtils class so client and server can share message argument encoding/decoding 10.12.1.1 null --- DERBY-6737 CLOB retrieve exceptions after moving cursor around 10.12.1.1 null --- DERBY-6733 Implement an MBean for monitoring caches 10.12.1.1 null --- DERBY-6730 Cannot create a Lucene index if a key column's name is case-sensitive 10.12.1.1 null --- DERBY-6724 NPE if insert statement needs recompilation after having fired a trigger 10.12.1.1 null
That's it! You now have a fixedBugsList.txt file and you're ready to run genrelnotes.