react-native: react-native-git-upgrade deletes my non-versioned files and fails

Description

I installed react-native-git-upgrade@0.2.5 and ran it on my project.

Reproduction

$ react-native-git-upgrade
git-upgrade info Check for updates
git-upgrade info Read package.json files
git-upgrade info Check declared version
git-upgrade info Check matching versions
git-upgrade info Check React peer dependency
git-upgrade info Check that Git is installed
git-upgrade info Get information from NPM registry
git-upgrade info Upgrading to React Native 0.41.2, React ~15.4.0
git-upgrade info Setup temporary working directory
git-upgrade info Configure Git environment
git-upgrade info Init Git repository
git-upgrade info Add all files to commit
git-upgrade info Commit current project sources
git-upgrade info Create a tag before updating sources
git-upgrade info Generate old version template
git-upgrade info Add updated files to commit
git-upgrade info Commit old version template
git-upgrade info Install the new version
npm WARN deprecated node-uuid@1.4.7: use uuid module instead
git-upgrade info Generate new version template
git-upgrade info Add updated files to commit
git-upgrade info Commit new version template
git-upgrade info Generate the patch between the 2 versions
git-upgrade info Save the patch in temp directory
git-upgrade info Reset the 2 temporary commits
git-upgrade info Apply the patch
fatal: unrecognized input
git-upgrade WARN The upgrade process succeeded but there might be conflicts to be resolved. See above for the list of files that have merge conflicts.
git-upgrade info Upgrade done
$

And in the end, no file is modified, and some files are missing, for example android/app/google-services.json (present in my .gitignore)

Solution

No idea

Additional Information

  • React Native version: just installed 0.41.2, wanted to upgrade RN templates according to it
  • Platform: n/a
  • Operating System: macOS

Note: my Android/iOS package name is net.tribeez (my package.json name is tribeez)

About this issue

  • Original URL
  • State: closed
  • Created 7 years ago
  • Reactions: 19
  • Comments: 16 (6 by maintainers)

Commits related to this issue

Most upvoted comments

This is very much still happening to everyone who uses react-native-git-upgrade and uses a .gitignore.

.env files also disappear, which I’m not happy about…

Ok I reproduced the deletion by running the Git commands manually, just like the tool does: https://gist.github.com/ncuillery/4b09e36d772601301cf0d0c94dcde692. I think I got it:

The first step of the process consists in restoring the template of your current RN version, just like it would have been generated by the init command. So your .gitignore file is replaced by this one https://github.com/facebook/react-native/blob/master/local-cli/templates/HelloWorld/_gitignore for the rest of the process.

From now on, android/app/google-services.json is no longer ignored. So when the files are committed, it is considered as “added”.

At the end, the git reset --hard command reverts the commit and logically deletes the file 😱

I’ve started using rn-diff for upgrades, usually pretty quick and less frustrating to do it manually. https://github.com/ncuillery/rn-diff