我已经使用cocoapods将MKStoreKit版本4.99添加到我的项目中。我的Podfile包含:
platform :ios, '6.0'
pod 'MKStoreKit', '~> 4.99'
MKStoreKit有一个名为MKStoreKitConfigs.h的配置文件,需要在每个项目的基础上修改,我已经适当地修改了文件。当MKStoreKit发布新版本(比如5.0)并执行pod update
时会发生什么?我的更改会被覆盖吗?你能描述一下为什么是或为什么没有?
答案 0 :(得分:6)
是的,pod更新将覆盖您的更改。你可以做的是在Github上分叉项目,在你的fork中进行更改并将Cocoapods指向fork。有关如何执行此操作,请参阅Use a fork of Restkit on github via cocoaPod?。
答案 1 :(得分:5)
据我所知,这是一个已知问题,也有人说:“在头文件中配置第三方库是一种不好的做法。”
首先,您可以查看this commit。 IMO这是一种更好的配置方式。
您还可以使用以下方法将您的前叉添加为Pod:
pod 'MKStoreKit.MyFork', :path => 'MKStoreKit.MyFork.podspec'
编辑:
感谢 rounak 注意,:local
现在是:path
。来自cocoapods docs:
使用此选项(
:path
)CocoaPods将假定给定的文件夹为 Pod的根目录,将直接从那里链接文件 豆荚项目。这意味着您的修改将持续存在 CocoaPods安装。引用的文件夹可以是结帐 你最喜欢的SCM,甚至是当前回购的git子模块。
答案 2 :(得分:0)
这是一篇旧帖子,但我有一个相当简单的解决方法,可以保留你在Pod上所做的更改。
如上所述,pod update
将覆盖您所做的任何更改。但是,如果您正在使用git,我想要做的就是提交除我的pod更改之外的所有更改。
一旦我的分支上的唯一更改是Pod更改,我通过运行git stash save "Custom Cocoapod changes, apply after every pod update"
来隐藏pod更改。你可以通过改变""之间的文字给它任何你想要的信息。
此命令的副作用是将您的工作目录重置为之前的HEAD,因此如果您想重新应用这些存储,您可以运行git stash apply
以重新获取这些更改,然后您可以将它们提交到保存它们。
请勿使用git stash pop
,因为这会在应用后删除藏匿。
现在,在将来的某个未确定的时间,当您更新您的广告连播及其再次应用存储的时间时,您要执行的操作是git stash list
。这将返回您使用最新零索引进行的所有存储的列表。你可能会看到这样的事情:
stash@{0}: On featureFooBar: foo bar
stash@{1}: On Master: Custom Cocoapod changes, apply after every pod update
...
如果自定义可可豆荚更改藏匿在隐藏@ {0}然后完美,您可以再次运行git stash apply
,并且您将在工作目录中获得这些更改。否则,一旦找到您的广告连播更改的存储号码,您就可以通过运行git stash apply stash@{1}
来应用该存储空间
当您在同一分支上有一个干净的工作目录但不需要时,应用stashes是最简单的。 This page给出了git stash的良好描述以及如何使用它。