12

我已经使用 cocoapods 将 MKStoreKit 版本 4.99 添加到我的项目中。我的 Podfile 包括:

platform :ios, '6.0'
pod 'MKStoreKit', '~> 4.99'

MKStoreKit 有一个名为 MKStoreKitConfigs.h 的配置文件,需要在每个项目的基础上进行修改,我已经适当地修改了该文件。当 MKStoreKit 发布一个新版本,比如 5.0,我执行时会发生什么pod update?我的更改会被覆盖吗?你能描述为什么是或为什么不是吗?

4

3 回答 3

6

是的,pod update 将覆盖您的更改。你可以做的是在 Github 上 fork 项目,在你的 fork 中进行更改并将 Cocoapods 指向 fork。请参阅通过 cocoaPod 在 github 上使用 Restkit 的分支?关于如何做到这一点。

于 2013-05-17T16:39:51.110 回答
5

据我了解,这是一个已知问题,也有人说:“在头文件中配置 3rd 方库是一种不好的做法”。

所以首先你可以看一下这个 commit。IMO 这是配置它的更好方法。

您还可以使用以下命令将您的 fork 添加为 Pod:

pod 'MKStoreKit.MyFork', :path => 'MKStoreKit.MyFork.podspec'

编辑:感谢rounak的注意,:local现在是:path. 来自cocoapods文档:

使用此选项 ( :path) CocoaPods 将假定给定文件夹是 Pod 的根目录,并将直接从那里链接到 Pods 项目中的文件。这意味着您的编辑将在 CocoaPods 安装之间持续存在。引用的文件夹可以是您最喜欢的 SCM 的签出,甚至可以是当前 repo 的 git 子模块。

于 2013-05-17T16:44:32.103 回答
0

这是一篇旧帖子,但我有一个相当简单的解决方法来保留您在 Pod 上所做的更改。

如前所述,pod update将覆盖您所做的任何更改。但是,如果您使用 git,我喜欢做的是提交我的所有更改,除了我的 pod 更改。

一旦我对分支的唯一更改是 Pod 更改,我会通过运行git stash save "Custom Cocoapod changes, apply after every pod update". 您可以通过更改“”之间的文本来给它任何您想要的消息。

此命令具有将您的工作目录重置为以前的 HEAD 的副作用,因此如果您想重新应用这些存储,您可以运行git stash apply以重新获取这些更改,然后您可以提交它们以保存它们。

不要使用git stash pop,因为这会在应用后删除存储。

现在,在未来某个未确定的时间,当您更新 pod 并再次应用存储时,您要做的是 run git stash list。这将返回您所做的所有存储的列表,其中最近的索引为零。你可能会看到这样的东西:

stash@{0}: On featureFooBar: foo bar
stash@{1}: On Master: Custom Cocoapod changes, apply after every pod update
...

如果自定义 cocoa pod 更改 stash 在 stash@{0} 中那么完美,您可以git stash apply再次运行 a ,您将在工作目录中获得这些更改。否则,一旦您找到您的 pod 更改的存储编号,您可以通过运行应用该存储git stash apply stash@{1}

当您在同一个分支上有一个干净的工作目录但不是必需的时,应用存储是最简单的。这个页面很好地描述了 git stash 以及如何使用它。

于 2016-06-23T16:56:57.790 回答