SwiftGit2
Swift 的绑定库 libgit2.
let URL: NSURL = ...
let repo = Repository.at(URL)
if let repo = repo.value {
let latestCommit: Result<Commit, NSError> = repo
.HEAD()
.flatMap { repo.commit($0.oid) }
if let commit = latestCommit.value {
print("Latest Commit: \(commit.message) by \(commit.author.name)")
} else {
print("Could not get commit: \(latestCommit.error)")
}
} else {
println("Could not open repository: \(repo.error)")
}
设计
SwiftGit2 在可能的地方都使用值对象。这意味着使用 Swift 的 struct
和 enum
,而不持有对 libgit2 对象的引用。这有几个优点
- 值可以被并发使用。
- 消费值不会导致磁盘访问。
- 磁盘访问可以被限制在更少的 API 中。
这极大地简化了长生命周期的应用程序的设计,这是 Swift 最常见的使用场景。因此,SwiftGit2 API 不一定与 libgit2 API 1-1 映射。
所有从仓库读取或写入的方法都在 SwiftGit 的唯一 class
: Repository
上。这突出了这些方法的故障性和可变性,同时将所有其他实例都解除了不可变 struct
和 enum
的限制。
必需工具
为了构建 SwiftGit2,您需要安装以下本地工具
- cmake
- libssh2
- libtool
- autoconf
- automake
- pkg-config
将 SwiftGit2 添加到您的项目
将 SwiftGit2 添加到您项目的最简单方法是使用 Carthage。只需将 github "SwiftGit2/SwiftGit2"
添加到您的 Cartfile
,然后运行 carthage update
。
如果您愿意,可以继续使用 艰难的 旧式方法
- 将 SwiftGit2 添加为项目中存储库的子模块。
- 运行
git submodule update --init --recursive
以获取所有 SwiftGit2 的依赖。 - 将
SwiftGit2.xcodeproj
添加到您的项目 Xcode 项目或工作区。 - 在您的应用程序目标的“构建阶段”选项卡上,将
SwiftGit2.framework
添加到“与二进制链接库”阶段。SwiftGit2 还必须添加到“复制框架”构建阶段。 - 如果您将 SwiftGit2 添加到项目(而不是工作区),您还需要将适当的 SwiftGit2 目标添加到应用程序的“目标依赖项”中。
手动构建 SwiftGit2
如果您想在没有 Carthage 的情况下构建 SwiftGit2 的副本,可能用于开发
- 克隆 SwiftGit2
- 运行
git submodule update --init --recursive
以克隆子模块 - 在 Xcode 中构建
贡献
我们
- 对代码库进行分叉
- 创建一分支以包含您的更改
- 发送拉取请求
所有贡献应遵守 GitHub 的 Swift 风格指南。
许可证
SwiftGit2 的许可协议为 MIT 协议。