Miscellaneous

Complete code reviews

Nag all the reviewers to finish reviewing the code and change the status of bugs.


Check in serialization compatibility test data

ICU4J unit test contains serialization compatibility test cases. When a new reference version is released, we build serialized object data with the version and use it for future testing.

  1. Run "ant serialTestData" at ICU4J root directory
  2. The target generates test data and runs some serialization test cases.
  3. Once you confirm the test runs clean, copy out/serialTestData/ICU_<version> to main/tests/core/src/com/ibm/icu/dev/test/serializable/data/ICU_<version>.

Release ticket

After every milestone (GA / RC / Milestone-N) is completed, create a new release ticket in ICU Jira, then add the ticket link to the next milestone. The release ticket is used for BRS tasks, such as version update, tagging new version, merging post RC fixes from trunk and others.


Check integrity of Jira issues in commit messages

Every commit being shipped in the next ICU release should be labeled with a Jira ticket that is marked as fixed with the correct fix version.  Further, there should be no Jira tickets marked as fixed with the current fixVersion that do not have commits.  To check this, run the following tool:


Once you install the dependencies, run the tool like this:

$ git pull upstream master
$ cd tools/commit-checker
$ pipenv run python3 check.py > REPORT.md

Commit REPORT.md to a branch on your fork and view the file on GitHub to see it nicely formatted.

Before sending the report to ICU-TC, do some basic cleanup yourself by adjusting fix versions and resolutions on Jira issues.
  • Tickets with commits should be closed as Fixed, and fixed tickets without commits should be closed as Fixed by Other Ticket.  These tickets should have a fix version.
  • Tickets closed for any other reason, such as Duplicate, should not have a fix version.  Semantically, duplicate tickets inherit the fix version from the ticket to which they are duplicated.
It should be possible to clear the first two sections of the report simply by correcting the ticket resolutions and fix versions in Jira.

When ready, update and commit REPORT.md to your fork, and share it with ICU-TC.  Team members should close issues they own that are correctly fixed.  Re-generate the report periodically until it comes back clean.

Note: REPORT.md is not intended to be merged back into master.

Fix MisTicketted

If the commit checker tool above reports any malformed commit messages, it might mean that a bad commit made its way onto ICU master.  To fix this, a rebase is required.  Since rebases can be disruptive, confirm with ICU-TC before performing one.  If ICU-TC agrees to perform a rebase, initiate the process as follows:

$ git checkout master; git pull --ff-only upstream master
$ git rebase -i --preserve-merges latest

Note: although tempting, please do not use --committer-date-is--author-date.  It changes the order of commits in ways we don't want to do.

In the interactive rebase window, choose commit messages to rewrite using the "reword" option.  Save and exit the interactive screen, and then edit each commit message.

When ready, force-push master to your fork and give ICU-TC a day or two to review.  Before force-pushing to upstream, create a new branch on upstream with the latest commit on the old master; name it something like "pre63-old-master".  When ready, disable branch protection on master, force-push, and then reapply branch protection.  Create a new branch named something like "pre63-new-master" to allow users to easily switch between the two heads.

Send an email to icu-support explaining the change and how to deal with it.  You can use this email as a model.

Comments