Cocoapods Private Repo没有为标签提取正确的代码

时间:2014-01-24 06:02:28

标签: xcode git version-control dependency-management cocoapods

我很高兴得到私人CocoaPods回购工作。我的小内部库的v1.0与我的主应用程序一起工作就像一个魅力。然后我在库中添加了一些东西,提交了它,用v1.1标记了它,把它推了起来,一切都直奔地狱。

无论我做什么,即使我的主应用程序报告我的内部库指向1.1,我仍然会收到与1.0相同的代码。我很难过。

我已经验证的事情:

  • 我的私人pods repo具有正确的文件夹结构,每个文件夹中的.podspec个文件都具有相应的s.version
  • 我的内部pods repo上的两个podspec文件的文件进行了比较,并确认对文件的唯一更改是版本号。
  • 在内部库的repo上有git checkout tags/1.1并确认1.1标记包含相应的提交。
  • 通过BitBucket网站确认文件已更改,1.1的标记已在此处显示。

我还尝试了以下方法来解决它(我现在可以记住)并且仍然在Pod中添加了相同的代码。

  • 从Podfile中删除有问题的pod,运行pod update将其删除,重新添加,然后再次运行pod update
  • 清除~/Library/Caches/CocoaPods[ProjectRoot]/Pods并运行pod install
  • 通过pod repo remove [NAME]删除我的远程pod repo,然后以其他名称重新添加。
  • 将podspec指向:head
  • 将podspec指向我想要的特定提交。
  • 将podspec指向我本地的图书馆副本。

所有这些疯狂都指向git或Xcode的某种缓存问题,但是以详细模式运行CocoaPods似乎不会显示除第二个pod update之外删除的超临时缓存路径以外的任何内容已经完成了。

有人有任何进一步的建议吗?这让我开始香蕉。

更新1/24:我在一个单独的用户名下检查了代码并得到了一些奇怪的行为:

pod install
Analyzing dependencies
Downloading dependencies
Installing [Private Library] (1.0)
Installing Google-Mobile-Ads-SDK (6.7.0)
Installing LARSAdController (3.0.3)
Installing UIAlertView-Blocks (0.0.1)
Generating Pods project
Integrating client project

[!] From now on use `[App Name].xcworkspace`.

有趣的是,我想,即使我没有在Podfile中指定任何版本,它也抓住了1.0版本。然后我跑了:

pod update
Analyzing dependencies
Downloading dependencies
Installing [Private Library] (1.1)
Using Google-Mobile-Ads-SDK (6.7.0)
Using LARSAdController (3.0.3)
Using UIAlertView-Blocks (0.0.1)
Generating Pods project
Integrating client project

即使版本号递增,代码也不会改变。所以这指向了我搞砸了而不是缓存问题 - 但如果我这样做了,为什么它到底会抓到1.0版呢?有什么想法吗?

1 个答案:

答案 0 :(得分:3)

Welp,这是一个PEBKAC /没有看到树木问题的森林,当我试图放弃并切换到git子模块并看到似乎是同样的问题时,我意识到了这一点。

我将CocoaPod指向/[Project Root]/Library(当我尝试移动到git子模块时,最初在那里查看),但当我将该文件夹拖到库项目中的Xcode时,我' d选中了“将项目复制到目标组的文件夹(如果需要)”复选框。这创建了/[Project Root]/[Subfolder]/Library,我的所有更改都实际。一旦我解决了这个问题,惊喜一切,一切正常。

所以,呃,我想这里的教训是,如果你已经在兔子洞的这个地方走了很远的地方,请退后一步确保甚至还有一只兔子需要追逐开始。