当pod的新版本可用时,“pod update”会覆盖我的代码吗?
我已经使用cocoapods将MKStoreKit版本4.99添加到我的项目中。 我的Podfile包含:
platform :ios, '6.0' pod 'MKStoreKit', '~> 4.99'
MKStoreKit有一个名为MKStoreKitConfigs.h的configuration文件,需要在每个项目的基础上修改,我已经适当修改了文件。 当MKStoreKit发布一个新版本,比如5.0,我会执行pod update
,会发生什么? 我的更改会被覆盖吗? 你能描述为什么是或为什么不是?
是的,pod更新将覆盖您的更改。 你可以做的是在Github上分叉项目,在叉子上做出改变,并将Cocoapods指向叉子。 请参阅通过cocoaPod在github上使用Restkit的分支? 关于如何做到这一点。
据我了解这是一个已知的问题,也正如一个人说:“这是一种不好的做法,在头文件中configuration第三方库”。
所以起初你可以看看这个提交 。 海事组织这是一个更好的方式来configuration它。
您也可以使用以下方式将分叉添加为Pod:
pod 'MKStoreKit.MyFork', :path => 'MKStoreKit.MyFork.podspec'
编辑:感谢rounak注意, :local
现在是:path
。 来自cocoapods文档:
使用这个选项(
:path
),CocoaPods将假定给定的文件夹是Pod的根目录,并且将直接从Pods项目的文件链接文件。 这意味着您的编辑将在CocoaPods安装之间持续。 引用的文件夹可以是您最喜欢的SCM或当前回购的git子模块的结帐。
这是一个旧post,但我有一个相当简单的解决方法来保持您在Pod上所做的更改。
如上所述, pod update
将覆盖您所做的任何更改。 但是,如果你使用git,我喜欢做的是提交所有的更改,除了我的pod更改。
一旦我在我的分支上唯一的变化是Pods的变化,我通过运行git stash save "Custom Cocoapod changes, apply after every pod update"
。 你可以通过改变“”之间的文字给它任何你想要的信息。
这个命令的副作用是将工作目录重新设置到前一个HEAD,所以如果你想重新应用这些git stash apply
你可以运行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 ...
如果自定义cocoa豆包更改隐藏在@ {0}然后完美,你可以再次运行一个git stash apply
,你会得到你的工作目录的变化。 否则,一旦你发现你的豆荚改变了哪个存储号码,你可以运行git stash apply stash@{1}
当你在同一个分支上有一个干净的工作目录时,应用stash是最简单的,但这不是必需的。 这个页面提供了一个很好的git存储描述,以及如何使用它。