Skip to content
This repository has been archived by the owner on Jun 17, 2022. It is now read-only.

0.57 upgrade Added steps to upgrade gradle version #60

Merged
merged 64 commits into from
Mar 24, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
5d3583f
0.57 upgrade Added steps to upgrade gradle version
DaniAkash Nov 3, 2018
afc59e1
Add changelog-generator based on prior work by @satya164 (#61)
turnrye Nov 6, 2018
8117a3d
Fix markdownlint errors in (#62)
turnrye Nov 6, 2018
7a9c6e6
use shorter version of URI
turnrye Nov 7, 2018
e029540
Update CHANGELOG.md
kelset Nov 8, 2018
a9504b5
CHANGELOG - Correct spelling mistakes (#63)
wlfcss Nov 13, 2018
d24262a
quick placeholder for 0.57.5 changelog (#65)
kelset Nov 13, 2018
62ab652
Add 0.57.5 changelog (#66)
turnrye Nov 14, 2018
29c9b92
Add suggestion to use babel upgrade (#67)
lukewlms Nov 20, 2018
14bcb96
Add initial version of changelog as generated using
turnrye Nov 26, 2018
703ba3d
Update CHANGELOG.md
jessestuart Nov 27, 2018
20deb97
Remove commit entries that @TheSavior specifically called out
turnrye Nov 27, 2018
46d18af
Merge branch '0.58-changelog' of https://github.com/react-native-comm…
turnrye Nov 27, 2018
4f28015
Changelog for 0.57.6 & 7 (#73)
kelset Nov 30, 2018
7960318
fix typo (#74)
vonovak Dec 3, 2018
c8d34a3
Various fixes for @TheSavior's read of things; still very rough
turnrye Dec 5, 2018
0fbcd2d
Increase android build tools version
DaniAkash Dec 7, 2018
8d47d44
Remove empty line
DaniAkash Dec 7, 2018
c84a64a
A few small removals for non-user-impacting things; correct a typo
turnrye Dec 8, 2018
7f3a52f
Merged master
turnrye Dec 8, 2018
67750f2
Processed the existing 'added' and 'changed' sections
turnrye Dec 8, 2018
8b946ac
Process 'removed' and 'fixed general' sections
turnrye Dec 8, 2018
6183249
Finished processing of the 'fixed' section
turnrye Dec 8, 2018
73d418f
Processed the main unknown section
turnrye Dec 8, 2018
31dfe9b
Finished processing; need to check for any recent changes since the s…
turnrye Dec 8, 2018
3073b21
Address the two todos
turnrye Dec 10, 2018
c952854
Add recent changes to the changelog; covered through c0bf7a1 now
turnrye Dec 10, 2018
e224e26
Update CHANGELOG.md
hramos Dec 10, 2018
b7ff299
changelog 0578 (#76)
kelset Dec 13, 2018
01d5fb3
Merged master; also fixed issues with previous work around markdownli…
turnrye Dec 19, 2018
539e156
Fix typo
turnrye Dec 19, 2018
baf5747
Fix minor formatting issue
turnrye Dec 19, 2018
64df6fa
Update CHANGELOG.md
Johan-dutoit Jan 9, 2019
d1b491a
docs(CHANGELOG.md): Document ScrollView ES6 conversion (#77)
RSNara Jan 9, 2019
5dc31da
docs(CHANGELOG.md): Document other components converted to ES6 classe…
RSNara Jan 16, 2019
f6c09a5
Fix linting issues related to new merge
turnrye Jan 16, 2019
24c2532
Add back accidentally removed prior changes
turnrye Jan 16, 2019
14cb451
Add back one last accidentally removed prior changes; probably due to…
turnrye Jan 16, 2019
2d6632e
Add topmatter that highlights a few key things; open to input on what…
turnrye Jan 16, 2019
9f01b74
Removing internal only changes from changelog (#80)
elicwhite Jan 21, 2019
1a6c5b0
Update CHANGELOG.md
Salakar Jan 23, 2019
b1c0bf0
Merge pull request #69 from react-native-community/0.58-changelog
grabbou Jan 24, 2019
8f17023
Fix flow dependency version for 0.58.0
Bardiamist Jan 28, 2019
5446807
0.58.{1,2,3} (#82)
turnrye Jan 30, 2019
d2e18fd
Update regarding 0.58 and build tools version 28.0.2 (#85)
Feb 6, 2019
972f6aa
fix(typo): iOS Unkown to Unknown
telmen Feb 11, 2019
92be1f3
Merge pull request #87 from telmen/master
grabbou Feb 11, 2019
e3d6511
Chore: cleanup & 0.58.4 (#88)
kelset Feb 13, 2019
efe82ec
Add missing breaking change for 0.58 (#90)
karanjthakkar Feb 18, 2019
02fc11c
Chose: adding a simple issue template (#94)
kelset Feb 20, 2019
69a8e09
Chore: 0.58.5 changelog (#96)
kelset Feb 20, 2019
d6c1296
s/XCode/Xcode/
hramos Feb 21, 2019
07136a6
changelog for 0.58.6 (#98)
kelset Feb 28, 2019
06cf8ac
0.59 (#93)
turnrye Mar 12, 2019
8ae9040
Fix malformed markdown (#101)
cheeaun Mar 12, 2019
e7bc5c2
Typo in 0.58
hramos Mar 12, 2019
fb436a3
Update CHANGELOG.md - fix typo (#102)
Titozzz Mar 12, 2019
e67ec4f
Mention `textAlign:justify` support for 0.59 (#103)
sunnylqm Mar 13, 2019
e64d96a
Mention launchOptions clearing when bridge is reloaded (#104)
igorlira Mar 16, 2019
5b0f9bf
0.57 upgrade Added steps to upgrade gradle version
DaniAkash Nov 3, 2018
f5ef35d
use shorter version of URI
turnrye Nov 7, 2018
051f9d2
Increase android build tools version
DaniAkash Dec 7, 2018
5e10a68
Remove empty line
DaniAkash Dec 7, 2018
7753c06
Merge branch 'DaniAkash-patch-1' of github.com:DaniAkash/react-native…
DaniAkash Mar 24, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .github/ISSUE_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
👋 there!

GitHub Issues in this repository are used exclusively for tracking releases or discussions around them. Please do not submit support requests.

For questions or help, please see:

- The React Native [issue section](https://github.com/facebook/react-native/issues)
- The React Native [help page](http://facebook.github.io/react-native/help)
- The React Native channel in [Reactiflux](https://discord.gg/0ZcbPKXt5bZjGY5n)
- The react-native tag on [Stack Overflow](http://stackoverflow.com/questions/tagged/react-native)
- For feature request, please use [Canny instead](https://react-native.canny.io/feature-requests).

### Please note that this issue tracker is not a help forum - requests for help will be closed.
3 changes: 2 additions & 1 deletion .markdownlint.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"default": true,
"line-length": false,
"no-duplicate-header": false
"no-duplicate-header": false,
"MD029": { "style": "ordered" }
}
5 changes: 5 additions & 0 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"recommendations": [
"esbenp.prettier-vscode"
]
}
550 changes: 520 additions & 30 deletions CHANGELOG.md

Large diffs are not rendered by default.

31 changes: 21 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,34 +1,45 @@
# React Native Releases

[![GitHub Issues](https://img.shields.io/github/issues/react-native-community/react-native-releases.svg)](https://github.com/react-native-community/react-native-releases/issues)
![Contributions welcome](https://img.shields.io/badge/contributions-welcome-orange.svg)
[![GitHub Issues](https://img.shields.io/github/issues/react-native-community/react-native-releases.svg)](https://github.com/react-native-community/react-native-releases/issues) ![Contributions welcome](https://img.shields.io/badge/contributions-welcome-orange.svg)

Stay up-to-date with the release activities of [React Native](https://github.com/facebook/react-native/) by [watching](https://github.com/react-native-community/react-native-releases/subscription) for [status reports](https://github.com/react-native-community/react-native-releases/issues?q=is%3Aopen+is%3Aissue+label%3A%22release+status%22). Follow along as the release notes are prepared and review the overall [changelog](https://github.com/react-native-community/react-native-releases/blob/master/CHANGELOG.md).
Stay up-to-date with the release activities of [React Native](https://github.com/facebook/react-native/) by [watching](https://github.com/react-native-community/react-native-releases/subscription) for [status reports](https://github.com/react-native-community/react-native-releases/issues?q=is%3Aopen+is%3Aissue+label%3A%22release+status%22). Or you can follow along as the release notes are prepared and help reviewing the overall [changelog](https://github.com/react-native-community/react-native-releases/blob/master/CHANGELOG.md).

## Release Status Issues

Progress towards release is tracked in issues. Look for these issues labelled _release status_. Soon a standardized format for the update will be published; please be patient while this settles.
Progress towards release is tracked in issues, based on labels:

Note that these issues are locked to keep conversation focused strictly on the status. Questions about the release should be directed to the [React Native](https://github.com/facebook/react-native/) repository or other communications channels.
- _release status_: here you can read the status for the future/RC level releases
- _stable_: here you can read the status for the current stable release
- _backport requests_: here you can request cherry-picks for the current stable release, that will be included in the next patch version

Note that these issues are made to keep the conversation focused strictly on the status of each one - please refrain from going off-topic.

## Changelog

The changelog in this repository is a community-provided effort to provide a helpful and informative summary of React Native's rapidly changing codebase. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and emojii use is roughly based on [gitmoji](https://gitmoji.carloscuesta.me/) recommendations.
The changelog in this repository is a community-driven effort to provide a helpful and informative summary of React Native's rapidly changing codebase along with a full list of commits.

The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/), and generated via the script described in the next section.

In order to allow additional research, the commits that relate to a change are listed with their hashes. The revisions listed typically are the merge commits, so as to match the code that a user may find in their own copy. Authors are attributed to encourage recognizing the contributors for supporting React Native.

### Changelog helper script

In order to generate the Changelog, we use a script that, given a base version and a target version, checks all the commits between the two versions and parses release notes and authors in the commit message - and then prints it in the terminal for easy/copy paste.

In order to allow additional research, the commits that relate to a change are listed. The revisions listed typically are the merge commits, so as to match the code that a user may find in their own copy. Authors are attributed to encourage recognizing the contributors for supporting React Native.
To use it first off `git clone` the repo, then `yarn` and finally you can use it like in the following example: `./changelog-generator.js -b v0.57.5 -c v0.57.6`.

## "When will my fix make it into a release?"

React Native follows a [monthly release cycle](http://facebook.github.io/react-native/versions.html). Once a pull request is merged to the [core `react-native` repo](https://github.com/facebook/react-native), it may take one to two months for the changes to make it to a stable React Native release.
React Native follows a release cycle not strictly monthly - you can read more [about it here](https://github.com/react-native-community/discussions-and-proposals/issues/17). Once a pull request is merged to the [core `react-native` repo](https://github.com/facebook/react-native), it may take one to two months for the changes to make it into a stable React Native release.

To determine whether a fix or feature is present in a given release, you will need the commit hash where the fix or feature was added to the `master` branch of the core `react-native` repo. If you know the PR, you can look for the comment from **@facebook-github-bot** that says 'closed this in <COMMIT_HASH>'.

Once you have the commit hash, navigate to `https://github.com/facebook/react-native/commit/<COMMIT_HASH>`. Look closely at the commit message, underneath which you will find a list of tags associated with the commit. These tags will tell you which releases contains this commit. For example, commit [5e80d95e034259af8c41b50756a623756cc81a77](https://github.com/facebook/react-native/commit/5e80d95e034259af8c41b50756a623756cc81a77) has the following tags as of this writing: `v0.55.0-rc.0 v0.54.2 v0.54.1 v0.54.0 v0.54.0-rc.4 v0.54.0-rc.3 v0.54.0-rc.2 v0.54.0-rc.0 latest`. These tags tell us that the commit first made it into the 0.54 release candidate, eventually landing in the 0.54 stable release. It is also present, as you'd expect, in the 0.55 release candidate (and should make it to 0.55 stable, and so on).

If the commit is only present in `master` (i.e. has no tags), then the commit has yet to be picked up by a release. You can expect it to be included in the next release candidate that is cut at the beginning of the next month.
If the commit is only present in `master` (i.e. has no tags), then the commit has yet to be picked up by a release (or it may have been included in a follow up cherry pick for a patch version). You can expect it to be included in the next release candidate that is cut once the designed features have all landed.

## Backporting/cherry-picking of changes to existing builds

From time to time, [backporting](https://en.wikipedia.org/wiki/Backporting) a change to an existing release (including candidates) may be needed. Examples include security issues or critical regressions. If you believe a pull request on `react-native` is a candidate for backporting, please mention it in the version associated _backport request_ issue.
From time to time, [backporting](https://en.wikipedia.org/wiki/Backporting) a change to an existing release (including candidates) may be needed. Examples include security issues or critical regressions. If you believe a pull request on `react-native` is a candidate for backporting, please mention it in the version associated _backport request_ issue.

Please note that, if the change hasn't landed on `react-native`'s master, it can't be cherry picked to a release tag yet.
304 changes: 304 additions & 0 deletions changelog-generator.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,304 @@
#!/usr/bin/env node

'use strict';

const levenshtein = require('fast-levenshtein');

const argv = require('yargs')
.usage('$0 [args]', 'Generate a React Native changelog from the commits and PRs')
.options({
'base': {
alias: 'b',
describe: 'the base version branch or commit to compare against (most often, this is the current stable)',
demandOption: true
},
'compare': {
alias: 'c',
describe: 'the new version branch or commit (most often, this is the release candidate)',
demandOption: true
}
})
.version(false)
.help('help')
.argv

const base = argv.base;
const compare = argv.compare;

function fetchJSON(host, path) {
return new Promise((resolve, reject) => {
let data = '';

require('https').get({
host,
path,
headers: { 'User-Agent': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)' },
}).on('response', response => {
response.on('data', chunk => {
data += chunk;
});

response.on('end', () => {
try {
const json = JSON.parse(data);
resolve(json);
} catch (e) {
reject(e);
}
});

response.on('error', error => {
reject(error);
});
});
});
}

function filterCICommits(commits) {
return commits.filter(item => {
const text = item.commit.message.toLowerCase();
return !(text.includes('travis') || text.includes('circleci') || text.includes('circle ci') || text.includes('bump version numbers'));
});
}
function filterRevertCommits(commits) {
let revertCommits = [];
const revertCommitIndicators = ['revert "', 'back out "'];
const filteredCommits = commits.filter(item => {
let text = item.commit.message.split('\n')[0].toLowerCase();
if(revertCommitIndicators.some(indicator => text.includes(indicator))) {
revertCommitIndicators.forEach(indicator => {
text = text.replace(indicator, "");
});
revertCommits.push(text);
return false;
}
return true;
}).filter(item => {
let text = item.commit.message.split('\n')[0].toLowerCase();
revertCommits.forEach(revertCommit => {
if(levenshtein.get(text, revertCommit) < 0.5 * revertCommit.length) {
revertCommits = revertCommits.filter(function(e) { return e !== revertCommit });
return false;
}
});
return true;
});
if(revertCommits.length > 0) console.warn("Was unable to find the mate for the following revert commits: " + revertCommits + "; you will need to manually remove this from below.");
return filteredCommits;
}

function isAndroidCommit(change) {
return /\b(android|java)\b/i.test(change) || /android/i.test(change);
}

function isIOSCommit(change) {
return /\b(ios|xcode|swift|objective-c|iphone|ipad)\b/i.test(change) || /ios\b/i.test(change) || /\brct/i.test(change);
}

function isAdded(change) {
return /\b(add|adds|added|enhancement)\b/i.test(change);
}

function isChanged(change) {
return /\b(changes|changed)\b/i.test(change);
}

function isDeprecated(change) {
return /\b(deprecated|deprecate)\b/i.test(change);
}

function isRemoved(change) {
return /\b(remove|removed)\b/i.test(change);
}

function isFixed(change) {
return /\b(fix|fixes|fixed)\b/i.test(change);
}

function isSecurity(change) {
return /\b(security)\b/i.test(change);
}

function getChangeMessage(item) {
const commitMessage = item.commit.message.split('\n');
const entry = commitMessage.find(a => /\[ios\]|\[android\]|\[general\]/i.test(a)) || commitMessage[0];
const authorSection = `([${item.sha.slice(0, 7)}](https://github.com/facebook/react-native/commit/${item.sha.slice(0, 7)})${item.author ? ' by [@' + item.author.login + '](https://github.com/' + item.author.login + ')' : ''})`;
return `- ${entry} ${authorSection}`;
}

function getChangelogDesc(commits) {
const acc = {
added: { android: [], ios: [], general: [] },
changed: { android: [], ios: [], general: [] },
deprecated: { android: [], ios: [], general: [] },
removed: { android: [], ios: [], general: [] },
fixed: { android: [], ios: [], general: [] },
security: { android: [], ios: [], general: [] },
unknown: { android: [], ios: [], general: [] },
};

commits.forEach(item => {
const change = item.commit.message;
const message = getChangeMessage(item);

if (isAdded(change)) {
if (isAndroidCommit(change)) {
acc.added.android.push(message);
} else if (isIOSCommit(change)) {
acc.added.ios.push(message);
} else {
acc.added.general.push(message);
}
} else if (isChanged(change)) {
if (isAndroidCommit(change)) {
acc.changed.android.push(message);
} else if (isIOSCommit(change)) {
acc.changed.ios.push(message);
} else {
acc.changed.general.push(message);
}
} else if (isDeprecated(change)) {
if (isAndroidCommit(change)) {
acc.deprecated.android.push(message);
} else if (isIOSCommit(change)) {
acc.deprecated.ios.push(message);
} else {
acc.deprecated.general.push(message);
}
} else if (isRemoved(change)) {
if (isAndroidCommit(change)) {
acc.removed.android.push(message);
} else if (isIOSCommit(change)) {
acc.removed.ios.push(message);
} else {
acc.removed.general.push(message);
}
} else if (isFixed(change)) {
if (isAndroidCommit(change)) {
acc.fixed.android.push(message);
} else if (isIOSCommit(change)) {
acc.fixed.ios.push(message);
} else {
acc.fixed.general.push(message);
}
} else if (isSecurity(change)) {
if (isAndroidCommit(change)) {
acc.security.android.push(message);
} else if (isIOSCommit(change)) {
acc.security.ios.push(message);
} else {
acc.security.general.push(message);
}
} else {
if (isAndroidCommit(change)) {
acc.unknown.android.push(message);
} else if (isIOSCommit(change)) {
acc.unknown.ios.push(message);
} else {
acc.unknown.general.push(message);
}
}
});

return acc;
}

function buildMarkDown(data) {
return `

## [${argv.compare}.0]

### Added

${data.added.general.join('\n')}

#### Android specific

${data.added.android.join('\n')}

#### iOS specific

${data.added.ios.join('\n')}

### Changed

${data.changed.general.join('\n')}

#### Android specific

${data.changed.android.join('\n')}

#### iOS specific

${data.changed.ios.join('\n')}

### Deprecated

${data.deprecated.general.join('\n')}

#### Android specific

${data.deprecated.android.join('\n')}

#### iOS specific

${data.deprecated.ios.join('\n')}

### Removed

${data.removed.general.join('\n')}

#### Android specific

${data.removed.android.join('\n')}

#### iOS specific

${data.removed.ios.join('\n')}

### Fixed

${data.fixed.general.join('\n')}

#### Android specific

${data.fixed.android.join('\n')}

#### iOS specific

${data.fixed.ios.join('\n')}

### Security

${data.security.general.join('\n')}

#### Android specific

${data.security.android.join('\n')}

#### iOS specific

${data.security.ios.join('\n')}

### Unknown

${data.unknown.general.join('\n')}

#### Android Unknown

${data.unknown.android.join('\n')}

#### iOS Unknown

${data.unknown.ios.join('\n')}
`;
}

fetchJSON('api.github.com', '/repos/facebook/react-native/compare/' + base + '...' + compare)
.then(data => data.commits)
.then(filterCICommits)
.then(filterRevertCommits)
.then(getChangelogDesc)
.then(buildMarkDown)
.then(data => console.log(data))
.catch(e => console.error(e));
Loading