How to really work in team on React Native project? - xcode

How do you work in team on react native projects?
I'm working in Team of 2 people and having a lot of issues with working on the same project.
I don't understand how to properly create an environment so we can sync our code between each other while working on the same project. Now, we create a git repo with /ios and /android folders, but the thing is: the /ios folder always needs to be changed, because it links to the computer that was last building the project.
For example: we are working at the same time on different .js files and add a new npm dependency and we wish to sync our changes, so we commit changes to the Git repo and try to sync, this is where our pains begin.
The one need downloading the changed has to go to Xcode and manually update all the Framework Search Paths, Header Search Paths, delete libraries that Xcode doesn't see and then add them again.
I know it's moreof an Xcode problem, but I didn't see any detailed guide about team syncing in projects. I know that at Facebook people are doing a lot of cooperative work and I'd appreciate some input over our issues!

If you are using git, you can configure your .gitignore-file to prevent committing xcode-specific stuff and other configuration files.
I can highly recommend gitignore.io, which is a "web service designed to help you create .gitignore files for your Git repositories" [Source].
You can for example type in XCode (or AndroidStudio, ReactNative, Gradle, etc.) and it will automagically generate a .gitignore file for you.

Related

Swift Package Manager - How to add checkouts to source control? [duplicate]

I started using new Xcode 11 which integrates SPM.
I added first dependency to my project:
but detected that files are not fetched into my project folder but into Xcode's cache:
I would like to commit all my dependencies files into my main project repository so my question is:
Is it possible to change location of fetched packages via SPM using Xcode 11?
It's somewhat possible, although the solution isn't necessarily a good or great practice, so I can't recommend.
Set the DerivedData in workspace settings to be relative to the workspace.
Add gitignore rules such that the workspace/WORKSPACE_NAME_DIR/SourcePackages/checkouts and related files are includes. Maybe best to ensure repositories directory is not included.
Add a Run Script phase to remove .git and .gitignore files in the checkouts directory.
Obviously, this is fragile largely through fighting the way SPM works. The workspace settings are per person so it's not great in teams.
SwiftPM integration has been setup to prevent this. It clones the files into a DerivedData/ProjectName-[RandomStuff]. You should commit your Package.resolved into the repo to ensure that you get the same version of each dependency across clones of the project.

Is it possible to include SPM checkouts in Git?

It's possible to store Checkout and Build directories when using CocoaPods and Carthage.
Is this possible using Xcode 11's SPM?
Or, if I could modify the location SPM uses for Checkouts, then I think this could work by setting this directory to somewhere in the workspace's directory structure.
(I'm in the camp that prefers to keep all assets required to build projects in the same Git repo as the project itself. Don't hate me :) )
You can't do this.
See my previous response to this question here.

How to restart project in Xcode with Bitbucket

I currently have an Xcode project which has a remote in the organizer for a Bithucket repository. I want to start the project over with a fresh template. However I do not want to lose all my previous commits I just want a brand new project in Xcode but to Bitbucket it should just be like another commit. How do I go about in doing this? I would like instructions on what I do in Xcode and what I do in Bitbucket. Thanks in advance!
I've never used the built in git client in XCode, but one idea would be to create the new project, migrate over the .git folder and .gitignore (if there is one) together with the source files and resources you may need.
I'm bit curious to why you'd want to create a new project.
I'd also recommend using the terminal version of git, but that's just an aside.
It sounds like you might actually want a new project hosted on BitBucket. You have unlimited private repositories; use them.
If for some reason you want to use an anti-pattern, you could just create a separate branch for each of your products. It is much better to just create another repository for new projects though. Otherwise, it is not clear what you are tracking in the repo.

How do you set up github version control for a team of two?

We're trying to set up github version control for a Jsp-project in NetBeans 7.0.1. The problem is we don't have a clue what to do. I Have set up a public account on github and done all the steps in the install guide on github, ssh keys and everything. So if I wanted to work on my own in this project I wouldn't have a problem.
The problem is how to get my collaborator started. He has an account on github. he set it up with ssh keys and such. In the admin view on github I added him as a collaborator, but we don't know the next step.
So the question is how to connect the collaborator to the project? something like this I suppose?
git remote add origin git#github.com:username/Hello-World.git
git pull
(another question: Do I git only the source files or the whole project folder?)
Regarding your second question... That's a tough one.
A few months ago I was working with a colleague on a JavaEE project and we initially decided to share the whole Eclipse project. Since I was working on Windows and he was working on Linux, we had much trouble maintaining everything. Also we had to make sure that we don't accidentally push up our .project dir, because that would overwrite the settings on the other persons machine, messing up the whole project. So we ended up removing all the project files from the repository and just keeping the source folders (src and WebContent).
Both of us set up an empty project, made our settings and than imported the source code from the repository. Was some trouble setting it up until everybody had the same project settings, but afterwards it worked like a charm.
For just two developers that is fine, I guess for a bigger team, there might be better solutions.
So, I guess Netbeans handles the project settings in a similar way. So in my opinion you should just share the code.
For the first access, what your collaborator should be able to do is a git clone of your repository.
That will set for him the remote address.
If he is declared as a collaborator, he then should be able to push/pull to that remote repo.
Note that your collaborator should have received a push notification access.

How do I use Github to create a totally separate project from a previous project?

I have a project on github that my developer and I used to collaborate on an iPhone app. That was my first exposure to version control and I used only a few tasks/commands: push, pull, stash on occasion.
We're now looking into making an OS X version and I'd like to use that previous project as the starting point for this new project.
It seems like this is FORKING the project. But I want to make sure that, once copied, the new (OS X) project has nothing to do with the previous (iOS) project. Is that what forking does? I've usually only heard it in regards to adding features. I've also heard the term cloning, but I believe that refers to making the local copy?
Try this:
Create a blank new project on GitHub
Do a git clone on the latest version of the iOS project to make a new copy of it.
Edit the information in the git config under .git in the copy folder to point to the new project on GitHub.
Forking is what you want. Creating a new project will lose the history from the original project, and will make it considerably more difficult to merge changes back and forth between the two. (Which you're likely to end up wanting to do if the projects are related at all.)

Resources