[ 
https://issues.apache.org/jira/browse/HBASE-14025?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14614032#comment-14614032
 ] 

Sean Busbey commented on HBASE-14025:
-------------------------------------

(opinion): JIRA is the source of truth for what is fixed in a given version. 
The CHANGES.txt file in a release is meant as a convenience for downstream 
folks who might not have access to JIRA. A primary benefit of providing this 
convenience is making sure the RM does a pass at validating the fix versions 
set in JIRA.

# Clean up JIRA for your release
## get the release notes from JIRA in text format and save it (i.e. as 
CHANGES_1.2.0_jira.txt)
### i.e. project home -> versions -> 1.2.0 -> Release Notes -> Configure 
Release Notes -> format: text -> Create (leads to [these text release notes for 
1.2.0|https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12332062&styleName=Text&projectId=12310753]
### the text box at the bottom will have the contents to copy
### filter the file to be just a list of JIRA IDs {code}
# on OS X, just use pbpaste as the first stage of this pipeline instead of 
saving to a temp file
$ cat CHANGES_1.2.0_raw.txt | grep -o -E "\[HBASE-[0-9]*\]" | grep -o -E 
"HBASE-[0-9]*" | sort -u > CHANGES_1.2.0_jira.txt
{code}
## get the set of JIRAs that are marked in git
### find the commit where your release line branched off from the previous 
release. {code}
$ git merge-base 1.1.0 branch-1.2
8166142b2e815fc6ab30c14a5a546cd242bf3b4c
{code}
### get the set of all jiras committed between that branch point and the 
previous release. {code}
$ git log --oneline 8166142...1.1.0 | grep -o -E " HBASE-[0-9]* " | awk 
'{$1=$1;print}' | sort -u > in_1.1.0.txt
{code}
### get the set of all jiras committed between that branch point and the 
current release.{code}
$ git log --oneline 8166142...branch-1.2 | grep -o -E " HBASE-[0-9]* " | awk 
'{$1=$1;print}' | sort -u > in_1.2.0.txt
{code}
### check the set of jiras that appear in the previous release after the branch 
but not in the current release.{code}
$ comm -2 -3 in_1.1.0.txt in_1.2.0.txt
{code}
###* these can be release specific changes (i.e. disabling DLR in the 1.1.0 
release)
###* they can be changes that were reverted during the prior release's RC 
process that have not been reapplied
###* they can be changes that were mistakenly only applied in the branch for 
the previous release and need to be cherry picked
### find the jiras for the current release that were not applied to the 
previous release after branching. this should be all the jiras that are in git 
for the current release.{code}
$ comm -1 -3 in_1.1.0.txt in_1.2.0.txt  > CHANGES_1.2.0_git.txt 
{code}
## go through JIRAs that appear in the JIRA tracker but not in git {code}
$ comm -1 -3 CHANGES_1.2.0_git.txt CHANGES_1.2.0_jira.txt
{code}
##* the above process can give you false positive here, e.g. if a commit was in 
the prior release but then reverted and reapplied in your release—be sure to 
check the git history
##* sometimes these are issue that didn't get properly cleaned up when things 
made it into the previous minor/major release during the RC process
##* sometimes they're task or umbrella jiras that don't have a representation 
in git
##* sometimes they're documentation jiras that shouldn't have been marked for 
the release (doc tickets always are resolved against the major version that was 
in the _master_ git branch at the time)
##* sometimes they're improperly closed tickets (e.g. invalid, duplicate, and 
wontfix tickets should not have a fix version)
##* sometimes they were improperly labeled on commit and weren't reverted and 
reapplied with the correct commit message.
##* occasionally they're changes that should be in your branch but were missed. 
in this case reopen the ticket and cherry-pick to your branch
## go through JIRAs that appear in git but not in JIRA {code}
$ comm -2 -3 CHANGES_1.2.0_git.txt CHANGES_1.2.0_jira.txt
{code}
##* sometimes these were improperly labeled on commit. ideally they will have 
been reverted and reapplied with the correct commit message.
##* sometimes they weren't marked correctly in jira because they were pushed 
out of the previous minor/major release during the RC process.
# remove entries in CHANGES.txt unrelated to your current release
#* for a PATCH release, you should be starting from a file that only contains 
related changes
#* for a MINOR release, you should reset the file so that you will only have 
changes for prior minor releases in the same major release (e.g. for the 1.2.0 
release CHANGES.txt will start by copying the notes from 1.0.0 and 1.1.0)
#* for a MAJOR release, you should reset the file so that you will only have 
changes for prior  major releases (e.g. for the 2.0.0 release CHANGES.txt will 
start by copying the notes from 1.0.0)
# generate a post-clean-up set of text release notes from JIRA and add it to 
the top of the CHANGES.txt file with the current date.

> Update CHANGES.txt for 1.2
> --------------------------
>
>                 Key: HBASE-14025
>                 URL: https://issues.apache.org/jira/browse/HBASE-14025
>             Project: HBase
>          Issue Type: Sub-task
>          Components: documentation
>    Affects Versions: 1.2.0
>            Reporter: Sean Busbey
>            Assignee: Sean Busbey
>             Fix For: 1.2.0
>
>
> Since it's more effort than I expected, making a ticket to track actually 
> updating CHANGES.txt so that new RMs have an idea what to expect.
> Maybe will make doc changes if there's enough here.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to