Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
antoinerousseau opened this issue Feb 6, 2017 · 16 comments
Closed
Labels
Resolution: Locked This issue was locked by the bot.

Comments

@antoinerousseau
Copy link
Contributor

antoinerousseau commented Feb 6, 2017

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)

@ncuillery
Copy link
Contributor

ncuillery commented Feb 6, 2017

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 😱

@koenpunt
Copy link
Contributor

koenpunt commented Apr 3, 2017

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

@jwarby
Copy link

jwarby commented Apr 5, 2017

Also lost some files which were .gitignore'd after using the upgrade tool... 😞

@rdixonbhw
Copy link

I'm assuming the files it obliterates are just as gone as if I'd run rm on them? If so that's a pretty significant setback for me.

@hehex9
Copy link

hehex9 commented Jun 8, 2017

react-native-git-upgrade deletes my jks file.
I just *****

@didil
Copy link

didil commented Jun 9, 2017

same , some gitignored files get deleted and I have to find them in my backups, pretty annoying if you dont expect it ...

@joncursi
Copy link
Contributor

Ditto. I use react-native-config to store environment variables for development, staging, and production. Git upgrade wipes out these files since they are not committed to github (contain secrets). Pain in the butt to have to replace them every month when a new RN version comes out.

@rdixonbhw
Copy link

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

@ujwal-setlur
Copy link

This is driving me nuts too! Every time I upgrade, my .env files and frameworks under ios/Frameworks are deleted (stuff under Frameworks is gitignore'd). First time build always fails before I remember to restore from backup...

Will check out https://github.com/ncuillery/rn-diff

@hramos hramos added the Tooling label Aug 29, 2017
@Robo-Rin
Copy link

Robo-Rin commented Oct 3, 2017

Any update on this? Did you all end up switching to rn-diff?

@antoinerousseau
Copy link
Contributor Author

@Hauuguu I did, yes

@MrToph
Copy link

MrToph commented Nov 12, 2017

Same here, just lost all my files that were gitignored ...

@stale
Copy link

stale bot commented Jan 11, 2018

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Maybe the issue has been fixed in a recent release, or perhaps it is not affecting a lot of people. If you think this issue should definitely remain open, please let us know why. Thank you for your contributions.

@stale stale bot added the Stale There has been a lack of activity on this issue and it may be closed soon. label Jan 11, 2018
@joeybaker
Copy link
Contributor

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

@stale stale bot removed the Stale There has been a lack of activity on this issue and it may be closed soon. label Jan 11, 2018
@ujwal-setlur
Copy link

I stopped using react-native-git-upgrade in favor of rn-diff

facebook-github-bot pushed a commit that referenced this issue Feb 1, 2018
Summary:
This PR fixes the issue #12237 relative to react-native-git-upgrade.

When the user adds new files to the .gitignore file, those files are deleted during the upgrade process because it starts by creating a fresh .gitignore file without user's modification, so the user's ignored files are no longer ignored and they are deleted during the upgrading process.

The best solution I've found to keep the user's ignored files... ignored, consists in appending the content of the .gitignore file in the `<TEMP DIR>/.git-rn/info/exclude` file.
The user's ignored files are now ignored at the repository level, they no longer interfere with the upgrade process.

Reminder: The tool uses a temporary local Git repository generated on the fly, so we can do whatever we want in it.

- Publish react-native-git-upgrade to sinopia
- `npm install -g react-native-git-upgrade`
- Init a new project with an old version: `react-native init MyApp --version=0.50.0`
- Create a new file named `dummy-ignored-file.json` in the project's root
- Append `dummy-ignored-file.json` to the `.gitignore` file
- Run `react-native-git-upgrade`

👉 The `dummy-ignored-file.json` is not deleted.

[CLI][BUGFIX][react-native-git-upgrade] - Keep the user's ignored files while upgrading
<!--
Help reviewers and the release process by writing your own release notes

**INTERNAL and MINOR tagged notes will not be included in the next version's final release notes.**

  CATEGORY
[----------]        TYPE
[ CLI      ]   [-------------]      LOCATION
[ DOCS     ]   [ BREAKING    ]   [-------------]
[ GENERAL  ]   [ BUGFIX      ]   [-{Component}-]
[ INTERNAL ]   [ ENHANCEMENT ]   [ {File}      ]
[ IOS      ]   [ FEATURE     ]   [ {Directory} ]   |-----------|
[ ANDROID  ]   [ MINOR       ]   [ {Framework} ] - | {Message} |
[----------]   [-------------]   [-------------]   |-----------|

[CATEGORY] [TYPE] [LOCATION] - MESSAGE

 EXAMPLES:

 [IOS] [BREAKING] [FlatList] - Change a thing that breaks other things
 [ANDROID] [BUGFIX] [TextInput] - Did a thing to TextInput
 [CLI] [FEATURE] [local-cli/info/info.js] - CLI easier to do things with
 [DOCS] [BUGFIX] [GettingStarted.md] - Accidentally a thing/word
 [GENERAL] [ENHANCEMENT] [Yoga] - Added new yoga thing/position
 [INTERNAL] [FEATURE] [./scripts] - Added thing to script that nobody will see
-->
Closes #17393

Differential Revision: D6839856

Pulled By: hramos

fbshipit-source-id: e4e9d759b59790e3cbc52408cef8314bf0a9c772
Plo4ox pushed a commit to Plo4ox/react-native that referenced this issue Feb 17, 2018
Summary:
This PR fixes the issue facebook#12237 relative to react-native-git-upgrade.

When the user adds new files to the .gitignore file, those files are deleted during the upgrade process because it starts by creating a fresh .gitignore file without user's modification, so the user's ignored files are no longer ignored and they are deleted during the upgrading process.

The best solution I've found to keep the user's ignored files... ignored, consists in appending the content of the .gitignore file in the `<TEMP DIR>/.git-rn/info/exclude` file.
The user's ignored files are now ignored at the repository level, they no longer interfere with the upgrade process.

Reminder: The tool uses a temporary local Git repository generated on the fly, so we can do whatever we want in it.

- Publish react-native-git-upgrade to sinopia
- `npm install -g react-native-git-upgrade`
- Init a new project with an old version: `react-native init MyApp --version=0.50.0`
- Create a new file named `dummy-ignored-file.json` in the project's root
- Append `dummy-ignored-file.json` to the `.gitignore` file
- Run `react-native-git-upgrade`

👉 The `dummy-ignored-file.json` is not deleted.

[CLI][BUGFIX][react-native-git-upgrade] - Keep the user's ignored files while upgrading
<!--
Help reviewers and the release process by writing your own release notes

**INTERNAL and MINOR tagged notes will not be included in the next version's final release notes.**

  CATEGORY
[----------]        TYPE
[ CLI      ]   [-------------]      LOCATION
[ DOCS     ]   [ BREAKING    ]   [-------------]
[ GENERAL  ]   [ BUGFIX      ]   [-{Component}-]
[ INTERNAL ]   [ ENHANCEMENT ]   [ {File}      ]
[ IOS      ]   [ FEATURE     ]   [ {Directory} ]   |-----------|
[ ANDROID  ]   [ MINOR       ]   [ {Framework} ] - | {Message} |
[----------]   [-------------]   [-------------]   |-----------|

[CATEGORY] [TYPE] [LOCATION] - MESSAGE

 EXAMPLES:

 [IOS] [BREAKING] [FlatList] - Change a thing that breaks other things
 [ANDROID] [BUGFIX] [TextInput] - Did a thing to TextInput
 [CLI] [FEATURE] [local-cli/info/info.js] - CLI easier to do things with
 [DOCS] [BUGFIX] [GettingStarted.md] - Accidentally a thing/word
 [GENERAL] [ENHANCEMENT] [Yoga] - Added new yoga thing/position
 [INTERNAL] [FEATURE] [./scripts] - Added thing to script that nobody will see
-->
Closes facebook#17393

Differential Revision: D6839856

Pulled By: hramos

fbshipit-source-id: e4e9d759b59790e3cbc52408cef8314bf0a9c772
@antoinerousseau
Copy link
Contributor Author

Looks like 7492860 resolved this.

@facebook facebook locked as resolved and limited conversation to collaborators Dec 11, 2019
@react-native-bot react-native-bot added the Resolution: Locked This issue was locked by the bot. label Dec 11, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Resolution: Locked This issue was locked by the bot.
Projects
None yet
Development

No branches or pull requests