Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/SwiftDocOrg/Git
A Swift package for working with Git, built on top of libgit2.
https://github.com/SwiftDocOrg/Git
git libgit2 swift
Last synced: 3 months ago
JSON representation
A Swift package for working with Git, built on top of libgit2.
- Host: GitHub
- URL: https://github.com/SwiftDocOrg/Git
- Owner: SwiftDocOrg
- License: mit
- Archived: true
- Created: 2020-07-20T20:01:03.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2021-07-14T21:36:40.000Z (over 3 years ago)
- Last Synced: 2024-07-10T10:33:06.468Z (4 months ago)
- Topics: git, libgit2, swift
- Language: Swift
- Homepage:
- Size: 144 KB
- Stars: 47
- Watchers: 5
- Forks: 6
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Git
A package for working with Git repositories in Swift,
built on top of [libgit2](https://libgit2.org).> **Warning**:
> This is currently a work-in-progress and shouldn't be used in production.## Requirements
- Swift 5.2
## Usage
```swift
import Git
import Foundationlet remoteURL = URL(string: "https://github.com/SwiftDocOrg/StringLocationConverter.git")!
let localURL = URL(fileURLWithPath: "<#path/to/repository#>")
let repository = try Repository.clone(from: remoteURL, to: localURL)repository.head?.name // "refs/heads/master"
let master = try repository.branch(named: "refs/heads/master")
master?.shortName// "master"
master?.commit?.message // "Initial commit"
master?.commit?.id.description // "6cf6579c191e20a5a77a7e3176d37a8d654c9fc4"
master?.commit?.author.name // "Mattt"let tree = master?.commit?.tree
tree.count // 6tree?["README.md"]?.object is Blob // true
let blob = tree?["README.md"]?.object as? Blob
String(data: blob!.data, encoding: .utf8) // "# StringLocationConverter (...)"tree?["Sources"]?.object is Tree // true
let subtree = tree?["Sources"]?.object as? Tree
subtree?.count // 1
subtree?["StringLocationConverter"]?.object is Tree // truelet index = repository.index
let entries = index?.entries.compactMap { $0.blob }
entries?.count // 9
```## License
MIT
## Contact
Mattt ([@mattt](https://twitter.com/mattt))