- Notifications
You must be signed in to change notification settings - Fork76
Easier React Native upgrades by clearly exposing changes from a version to another. 🚀 And what better way than to purge, init, then diff? Spoiler: there's no better way. 😎
License
react-native-community/rn-diff-purge
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
This repository exposes an untouched React Native app generated with the CLInpx @react-native-community/cli init RnDiffApp. Each new React Native release causes a new project to be created, removing the old one, and getting a diff between them. This way, the diff is always clean, always in sync with the changes of the init template.
A dedicated branch per release makes changes very easyto watch. For example:
- https://github.com/react-native-community/rn-diff-purge/compare/release/0.28.0..release/0.29.0(Change in Android template)
- https://github.com/react-native-community/rn-diff-purge/compare/release/0.29.0..release/0.29.2(no change)
- https://github.com/react-native-community/rn-diff-purge/compare/release/0.30.0..release/0.31.0(minor change in
.flowconfig) - https://github.com/react-native-community/rn-diff-purge/compare/release/0.30.0..release/0.31.0(minor change in
.flowconfig)
See table below for the complete list.
For some more info about the benefits of this repo's way versus the default way and rn-diff's way, read some of the conversation aroundhere.
Please ⭐ this repository if I helped you, and if you upgraded successfully because ofpurge,buy me a pizza 🍕
https://react-native-community.github.io/upgrade-helper/
Help us makethis full table pretty and more useful.
Probably having some nice alternating row color, having the leftest column stay on top and always visible, and having a nice width for the content of each cell to fit in one line would be some ideas, but you are welcome to try other things!
Diff table (full tableHERE)
| From->To | R | N | C | O | R | E | T | E | A | M | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0.83.0-rc.0 | X | - | - | - | - | - | - | - | - | - | - | - |
| 0.82.1 | ->0.83.0-rc.0 | X | - | - | - | - | - | - | - | - | - | - |
| 0.82.0 | ->0.83.0-rc.0 | ->0.82.1 | X | - | - | - | - | - | - | - | - | - |
| 0.82.0-rc.5 | ->0.83.0-rc.0 | ->0.82.1 | ->0.82.0 | X | - | - | - | - | - | - | - | - |
| 0.82.0-rc.4 | ->0.83.0-rc.0 | ->0.82.1 | ->0.82.0 | ->0.82.0-rc.5 | X | - | - | - | - | - | - | - |
| 0.82.0-rc.3 | ->0.83.0-rc.0 | ->0.82.1 | ->0.82.0 | ->0.82.0-rc.5 | ->0.82.0-rc.4 | X | - | - | - | - | - | - |
| 0.82.0-rc.1 | ->0.83.0-rc.0 | ->0.82.1 | ->0.82.0 | ->0.82.0-rc.5 | ->0.82.0-rc.4 | ->0.82.0-rc.3 | X | - | - | - | - | - |
| 0.82.0-rc.0 | ->0.83.0-rc.0 | ->0.82.1 | ->0.82.0 | ->0.82.0-rc.5 | ->0.82.0-rc.4 | ->0.82.0-rc.3 | ->0.82.0-rc.1 | X | - | - | - | - |
| 0.81.5 | ->0.83.0-rc.0 | ->0.82.1 | ->0.82.0 | ->0.82.0-rc.5 | ->0.82.0-rc.4 | ->0.82.0-rc.3 | ->0.82.0-rc.1 | ->0.82.0-rc.0 | X | - | - | - |
| 0.81.4 | ->0.83.0-rc.0 | ->0.82.1 | ->0.82.0 | ->0.82.0-rc.5 | ->0.82.0-rc.4 | ->0.82.0-rc.3 | ->0.82.0-rc.1 | ->0.82.0-rc.0 | ->0.81.5 | X | - | - |
| 0.81.3 | ->0.83.0-rc.0 | ->0.82.1 | ->0.82.0 | ->0.82.0-rc.5 | ->0.82.0-rc.4 | ->0.82.0-rc.3 | ->0.82.0-rc.1 | ->0.82.0-rc.0 | ->0.81.5 | ->0.81.4 | X | - |
| 0.81.2 | ->0.83.0-rc.0 | ->0.82.1 | ->0.82.0 | ->0.82.0-rc.5 | ->0.82.0-rc.4 | ->0.82.0-rc.3 | ->0.82.0-rc.1 | ->0.82.0-rc.0 | ->0.81.5 | ->0.81.4 | ->0.81.3 | X |
To see the full table containing all releases clickHERE
Once upon a time there was react-native. Lots of people used it and loved it. And there were often updates. As many as one per 2 weeks. People loved the new releases with all the new cool APIs and components and bugfixes. But how did they upgrade?
Many people tried to upgrade and automate the process, and many failed. One succeded.
Nicolas Cuillery (github,twitter) made a great script and kept it in thern-diff repo. It basically consisted of aproject branch, which had a react-native project initialized and upgraded usingreact-native-git-upgrade, which he also created. That worked great until it didn't. Nicolas added a few people including me to help with the repo, and we did update it, adding new upgrade diffs. At some point, the upgrades didn't work anymore, thereact-native-git-upgrade way got too hard to maintain and make work.
I saw that it was easier to just remove the old project andreact-native init a new one, and then generate the diff. This way I could see the changes in the template as well, helping my projects follow along with the evolution of the RN project templates. That way, an upgrade was never a big undertaking. I forkedrn-diff and createdrn-diff-purge. The script changed, to remove and recreate the project. This helped me and others by not having to wait for a diff to be generated, they could generate it themselves!
Lastly, thern-diff-purge repo got transfered to the react-native-community organization, in the repo with the same name,rn-diff-purge. Since then I have made the new way to generate and keep track of releases, made a table that allows for releases to always be diff-able no matter the order. I have kept theold master branch andold project branch for maintaining history, but I have created the newmaster branch and theapp-base that all releases branch off from, and each release gets its own branch, for examplerelease/0.58.6. We are already working withreact-native-cli to help people upgrade as easily as possible, and we will continue to do our best.
Many thanks to you for using this repo, many thanks to Nicolas for starting this, and many thanks to the React Native Core team and React Native Contributors team for helping make this repo and RN project upgrading awesome.
react-native-git-upgrade is painful. A simple diff by recreating the project is a much much simpler way to get a diff on every new React Native release.
Because I couldn't runreact-native init with an older version than that without the cli throwing errors. I hope people are not using still 0.22.0 anymore (Jan 2019).
I made ascript. Then I ran ahelper script to make the rest of the versions.Now I just ran thescripts/new-release.sh script manually when I get the email that there is a new release published on npm, and I am making a bot to do that for me.
Unfortunately it's a bit weird. Themaster branch is the keeping-track one. Then there is theapp-base branch that is the starting point of every other branch. Every react-native release gets its own branch. So having PRs that change master is great, but for adding a new release, a new branch has to be created, and that is only possible by the contributors of this repo.
Nevertheless, when a new release of React Native is released, we'll have to be prompt to providethe new diff. Having more collaborators on this project will help in the future. If you're interested, please open an issue to discuss.
One thing that could get some love is thedocs/index.html file, which produces a very basic html table. I would like to make it prettier and easier to navigation, but my css-fu is level 0. I would love to see what you can do to make it so! <3
If you have:
- questions
- suggestions
- ideas to make this even better
- the urge to just to say hello to me :)
feel free to make an issue or contact me. I'm pretty easy to find!
About
Easier React Native upgrades by clearly exposing changes from a version to another. 🚀 And what better way than to purge, init, then diff? Spoiler: there's no better way. 😎
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.