Carthage 的一点使用技巧

swift 发布于 2017年09月23日
关于 Carthage

Carthage 是一个去中心化的包管理系统,相比于 CocoaPods 这种中心化的包管理,有更加灵活快捷的优点。 之前咱们的一片文章专门介绍过它, Carthage 包管理工具

这次和大家分享一下在使用 Carthage 过程中的一些经验。

定制第三方开源库

之前在开发一个项目的过程中用到了一些第三方库, 比如 SwiftyDropbox, 是 Dropbox 提供的一个 Swift 版本的 SDK。 但它的 API 不能完全满足项目的需求。 需要进行一些修改才能满足当前的需要。 那怎么办呢?

最简单的方法就是直接修改 Clone 下来的代码。 但这样做会有很多隐患。 由于第三方的版本库不在你的控制之下, 所以你的修改不能直接提交上去, 只能保存在你自己的项目仓库中。 并且不利于包管理的控制。

稍微好一些的做法是在 Github 上面 Fork 这个项目。 Fork 其实就是创造这个版本库的一个副本,并且你有这个副本的控制权, 这样你就可以向这个副本中提交你更改的代码了。

Fork 操作也很容易, 只需要点击项目右上方的 Fork 按钮即可:

Fork 之后会生成一个在你账号下面的版本库地址, 你可以把 Fork 后的版本库 Clone 下来。 然后将你的修改内容提交上去:

使用 git clone 命令:

git clone https://github.com/swiftcafex/SwiftyDropbox

Clone 下来之后,你就可以将自己需要的修改添加进来, 然后提交到你自己的版本库副本中了。

Carthage 的灵活性

前面咱们说过, Carthage 是一个去中心化的包管理系统, 也就是说任何符合 Carthage 规则的版本库都可以作为它的源来使用。 我们在前面例子中 Fork 下来的副本一样符合这个规则。

只需要修改 Cartfile, 将我们 Fork 的地址添加进来即可:

github "https://github.com/swiftcafex/SwiftyDropbox.git"

运行 carthage update ,这时候就会从我们 Fork 的版本库中抓取代码了。 有一点要注意,就是 carthage 抓取版本库是根据 tag 来抓取的。 也就是说我们 对 Fork 的这个分支所做的修改提交后, 要为他们建立一个新的 tag 号,并且要大于之前的 tag 才会被 carthage 正确的抓取到。

可以用 git tag 命令来查看现有的 tag 列表, 以 SwiftyDropbox 为例, 它的 tag 列表如下:

git tag
0.1
0.2
0.3
...
4.0.4
4.0.5
4.0.6
4.1.0

它的最新 tag 号是 4.1.0, 如果我们想让自己 Fork 的版本库能够被 Carthage 正确的抓取到, 只要创建一个大于 4.1.0 的 tag 即可。 这个步骤是必须的,否则 Carthage 就不能正确的读取到我们对版本库的修改。

结尾

Carthage 的去中心化特性, 给我们提供了 CocoaPods 这些中心化系统无法提供的能力, 比如我们这里的 Fork 的例子就是其中一个。 并且它的包管理不会侵入你的 Project 文件。 Carthage 的思路有些像 Git 本身,他们都是去中心化的一个实践。 两种哲学造就了两个不同的生态模型。


如果你觉得这篇文章有帮助,还可以关注微信公众号 swift-cafe,会有更多我的原创内容分享给你~

本站文章均为原创内容,如需转载请注明出处,谢谢。
关注微信公众号
发现更多精彩
swift-cafe