From 4fbd244b9a6b62e0efe1b4b5a7ec3de468f020f6 Mon Sep 17 00:00:00 2001 From: Aaron Brager Date: Thu, 12 Apr 2018 11:40:33 -0700 Subject: [PATCH] Suggest git apply --reject for failed upgrades Summary: The upgrade script uses `git apply --3way`: https://github.com/facebook/react-native/blob/4906f8d28cdbaf1b432494b473a4c61c1e193881/react-native-git-upgrade/cliEntry.js#L368-L369 If you've already upgraded something that React Native upgraded, this will silently fail. For example if you have already upgraded Gradle to the version available in the new version of React Native, the 3-way patch will fail. In this case, the upgraded version is installed into `node_modules` but `package.json` is not updated. More context, discussion, and information is in https://github.com/facebook/react-native/issues/12112#issuecomment-292619346. Until a more robust solution is implemented, this PR proposes to mitigate the effects of the problem by informing the user of the possible issue and instructing them of a workaround. In an affected project, I ran `react-native-git-upgrade` after applying my patch. As expected, I now receive the following output: ![image](https://user-images.githubusercontent.com/789577/38165770-6209ac68-34de-11e8-9d96-7c782e9ef7ce.png) After running the suggested command, `git status` now shows me the two rejections: ![image](https://user-images.githubusercontent.com/789577/38165796-d10ca7c8-34de-11e8-9037-8427513e3a84.png) And I can now [manually apply](https://stackoverflow.com/a/28569128/1445366) these changes. [CLI] [ENHANCEMENT] [react-native-git-upgrade/cliEntry.js] - Provide instructions for upgrading React Native when 3-way merges don't apply Closes https://github.com/facebook/react-native/pull/18636 Differential Revision: D7603073 Pulled By: hramos fbshipit-source-id: 32d387e1ee67d8b182d248c585cd33ba94808357 --- react-native-git-upgrade/cliEntry.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/react-native-git-upgrade/cliEntry.js b/react-native-git-upgrade/cliEntry.js index a9cbfa5641f369..49f9d53b4807ee 100644 --- a/react-native-git-upgrade/cliEntry.js +++ b/react-native-git-upgrade/cliEntry.js @@ -376,7 +376,9 @@ async function run(requestedVersion, cliArgs) { } catch (err) { log.warn( 'The upgrade process succeeded but there might be conflicts to be resolved. ' + - 'See above for the list of files that have merge conflicts.'); + 'See above for the list of files that have merge conflicts. ' + + 'If you don’t see the expected changes, try running:\n' + + `git apply --reject ${patchPath}`); } finally { log.info('Upgrade done'); if (cliArgs.verbose) {