Cocoapods error during pod update - ios

I've been using Cocoapods without any problems on my projects for a while now, but today I suddenly got this error while trying to update my pods on a particular project:
[!] Pod::Executable pull
Your configuration specifies to merge with the ref 'master'
from the remote, but no such ref was fetched.
I have been trying to work out what is causing this issue but to no avail (it happens on all projects that use Cocoapods during the "Analyzing dependencies" stage).
Does anyone know what's causing this (and how to resolve it)?

This looks like an issue with the git repository that all of CocoaPod's specs come from. It lives in ~/.cocoapods. To fix issues like this the easiest way is to just delete it entirely with rm -rf ~/.cocoapods and set it up again with pod setup
EDIT:
Today (1/30/14) there was an issue with the specs repo that may make you want to fix this. Read more about it on the CocoaPods Blog

Related

Problem with Cocoapods, showing error 'Couldn't determine repo type for URL' when installing pods

I used Cocoapods a lot, but recently whenever I was updating the pods (pod update), it started duplicating files and often didn't let me create a build for the App Store.
I updated Cocoapods to the last version possible but still didn't solve that. Then I tried to remove and re-install it.
Now is occurring another issue. When I try to run pod install on any project, pods are not getting installed like previously, but is showing this error:
myUser$ pod install
Analyzing dependencies
[!] Couldn't determine repo type for URL: `https://github.com/CocoaPods/Specs.git`: Permission bits for '/Users/myUser/.netrc' should be 0600, but are 644
Previously, this never happened, but now it's happening even on projects that Cocoapods worked like a charm. What could be the problem?
Thank you in advance.
The error message says there's a permission issue:
Permission bits for '/Users/myUser/.netrc' should be 0600, but are 644
So in order to fix the permission, you should do this:
chmod 600 ~/.netrc
Then try to run pod install again. If the root cause was really this permissions issue then everything should work.
In addition to 0xced's answer: Check and fix possible syntax errors in ~/.netrc .

Multiple dependencies error during build on iOS

I'm trying to build my nativescript app on iOS.
I have brand new MacMini with fresh system and all stuff like xcode, etc.
My app builds without any warnings on android - not checked android build on Mac.
When i try to run my app on emulator i have an error saying:
Analyzing dependencies
[!] There are multiple dependencies with different sources for `Socket.IO-Client-Swift` in `Podfile`:
- Socket.IO-Client-Swift (from `https://github.com/triniwiz/socket.io-client-swift.git`)
- Socket.IO-Client-Swift (~> 12.1.3)
'pod install' command failed.
Tried to remove one of the dependency from pod file but without any luck - it brings back during build.
What should i do?
After updating my dependencies, I also ran into an issue with Cocopods, although, not exactly the same. In my case, running pod repo update from within platforms/ios solved my problem. In short, there had been updates that my local pod spec repo wasn't aware of and it was getting "confused". I'm not sure if this will ultimately solve your specific problem, but it's fairly quick to do and, at least, won't hurt anything.
Good luck!

I've Broken GIT With CocoaPods and Cannot Merge/Commit

This may be a more complicated issue than I am portraying, but after building an iOS app and occasionally using GIT, I am not in a challenging position; I have additional developers I am working with, and there is a need to properly use a repository (BitBucket) for further work.
My project is "complicated" for two reasons;
I am using CocoaPods for third-party dependencies.
I use using GPUImage2, which is a separate .xcproject embedded in my project.
Somehow, everything was working fine (I had a master branch and several branches that various developers have been working on). Things have been complicated whenever I find the need to switch branches or merge branches. Issues related to CocoaPods constantly come up, though endless efforts at the command line typically get us through our challenges.
At this point, we are now trying to merge master into a new feature branch, and have hit the end of the line.
My question: Only one actual project file has a merge conflict. Every other file is related to the .xcworkspace or something with CocoaPods. I would think it would be ideal to remove CocoaPods from GIT control altogether, leaving just the Podfile, which developers can install locally.
Does anyone have suggestions on dealing with CocoaPods and GIT with Xcode projects?
I strongly recommend that you do not add your Pods folder to git, only commit the Podfile and Podfile.lock.
You can do the following to remove the folder:
git rm --cached Pods/

specifying versions of library, using CocoaPods

This is basic issue but I'm so stuck with this.
I want to specify the version of releases of libraries(to get the latest one) but it doesn't work always.
For example, when I tried to specify the version of the library below, it failed again...
Please help me with this.
Try running pod repo update then pod install

Changing an imported library using cocoapods

I am working on a project using cocoapods and suddenly I see myself doing some changes in one of the libraries. How can I ensure that those changes will never be override by a pod update? Is there any way to introduce changes in a pod without updating the github project?
UPDATE : Forking a project
I have tried to fork the project and create a new specfile to point to the new project. I was able to install the basic stuff, however, for some reason, there are some dependencies that are installed but can't be referenced inside the pods project. Currently I have this in my podsfile:
'WhirlyGlobe', :podspec => 'https://raw.github.com/tiagoalmeida/WhirlyGlobe/master/WhirlyGlobe.podspec'
The fork of the library is in https://github.com/tiagoalmeida/WhirlyGlobe
UPDATE2: Missing Headers
I have found that the headers (Pods/Headers) for boost and Eigen (used from the WhrilyGlobe) are not being generated.
UPDATE3: Trying to do Something about the headers
I have tried to look in some of the configurations that are in this thread and I have tried the solutions in the FAQ but I believe that my problem is different. The headers are actually missing.
UPDATE4: Attacking the cocoapods version
I have uninstalled cocoapods and installed the version 0.20.2 (that was working before trying to use my fork) and it keeps all the same :/.
#pgb and wattson provided me good information but ultimately the problem was in a combination of things.
I don't know why but it seems that cocoapods 0.22 handles headers differently. I uninstalled cocoapods and installed the version 0.20.2.
To check the version of cocoapods I have used gem query and I have removed the cocoapods with gem uninstall cocoapods and installed the cocoapods with gem install cocoapods --version 0.20.2.
I have used my podfile like this:
'WhirlyGlobe', :podspec => 'https://raw.github.com/tiagoalmeida/WhirlyGlobe/master/WhirlyGlobe.podspec'
Where podspec points to my new podspec. I made like this because I need to remove the :tag from the original podfile (otherwise it always points to the same spot) and this way I have more control over the file.
In the podspec I have changed the source:
s.source = { :git => "https://github.com/tiagoalmeida/WhirlyGlobe.git"}
To point into my fork and removed the tag.
Thanks #pgb and #wattson for the attempts to help me. Upvoted both because they were both usefull.
You can fork a repository and then add your forked repo as a pod, so say you've forked the repo to https://github.com/tiago/ThePodProject.git, then set the pod to:
pod 'ThePodProject', :git => 'https://github.com/tiago/ThePodProject.git'
see here for more detail (under "From a podspec in the root of a library repo")
You are close to having it working with your forked repository.
I just tried it with the following Podfile:
pod 'WhirlyGlobe', :git => 'https://github.com/tiagoalmeida/WhirlyGlobe'
It downloaded WhirlyGlobe and then failed because hg was missing. I simply installed it using Homebrew: brew install mercurial and then runnning pod install was able to install all the dependencies.
The project compiles, but I'm not sure it works, go ahead and try it.
Be aware that it took a really long time to download and compile all the dependencies (shapelib in particular).
Just want to add my few cent to the answer.
I encounter the same problem. As someone suggested above too I went to subclass-ing the pod lib.
I was using ACEDrawingView and it has property image which is readonly.
I subclass-ed it and made this property read/write.
I personal feel going by sub-class is more elegant and hassle free solution to this kind of problem.
Unless there is huge development you want to do on side of your main project.
Saving custom changes using only Git (no forking)
For those looking for a simple solution, I have successfully solved this problem by using git stashes.
As mentioned, pod update will overwrite any changes you made. However, if you're using git what I like to do is commit all my changes except for my pod changes.
Once the only changes I have on my branch are the Pods changes, I stash those changes by running git stash save "Custom Cocoapod changes, apply after every pod update". You can give it any message you'd like by changing the text between the "".
This command has the side effect of reseting your working directory to the previous HEAD, so if you want to reapply those stashes you can just run git stash apply to get those changes back in, and then you can commit them to save them.
Don't use git stash pop as this will delete the stash after applying it.
Now, at some undetermined time in the future, when you update your pods and its time to apply the stash again, what you're going to want to do is run git stash list. this will return a list of all the stashes you've made with the most recent being zero indexed. You'll probably see something like this:
stash#{0}: On featureFooBar: foo bar
stash#{1}: On Master: Custom Cocoapod changes, apply after every pod update
...
If the custom cocoa pods changes stash is in stash#{0} then perfect, you can just run a git stash apply again and you'll get those changes on your working directory. Otherwise once you find which stash number your pods changes are you can apply that stash by running git stash apply stash#{1}
Applying stashes is easiest when you have a clean working directory on the same branch but thats not required. This page gives a good description of git stash and how to use it otherwise.
This is not the most full proof solution since I can foresee some issues when you have multiple people on the same project, but it's a simple way to solve this without resorting to more involved solutions.
There is an another way exist where you can fork the repository , modify the changes and maintain the library through cocoapods for future bug fixes and feature enhancement .....
I have recently published tutorial for the same here https://medium.com/#mihirpmehta/how-to-modify-cocoapods-library-within-pods-647d2bf7e1cb

Resources