Git is a high-level swift framework based on the command line Git utility in macOS.
git clone
and git fetch
). Including shallow clone support (--depth
option);git checkout
);git commit
and git push
);git log
);git stash
);git merge
);Git.framework
has no dependencies. Just clone and build.
Before installing this framework, please make sure you're using the correct version of Git in your system. You can check the current version via Terminal app:
git --version
$ git version 2.15.1
To install Carthage you can use Homebrew. Use the following command in Terminal app:
$ brew update
$ brew install carthage
To integrate Git.framework into your Xcode project using Carthage, specify it in your Cartfile
:
github "way-to-code/git-macOS" ~> 3.2.0
Run carthage update
to build the framework and drag the built Git.framework
into your Xcode project.
If you want to use Git.framework
on Xcode 10.1 or lower, please use version 1.5.1
github "way-to-code/git-macOS" ~> 1.5.1
You can install Git.framework manually. Clone the project locally, build and integrate to your project as a framework
You may download XCFramework from the latests release page and integrate it into your project.
Note that XCFramework support is available since version 3.0.0.
When you want to use Git.framework as a dependency in other package, you may follow the given example:
let package = Package(
name: "MyPackage",
products: [
.library(name: "myProduct", targets: ["myTarget"]),
],
dependencies: [
.package(name: "Git",
url: "https://github.com/way-to-code/git-macOS.git",
.upToNextMajor(from: "3.2.0")),
],
targets: [
.target(name: "myTarget", dependencies: [
.product(name: "Git", package: "Git")
]),
]
)
Read more about Git.framework
in the Wiki page:
To clone a remote repository you need to create an object GitRepository
let repository = GitRepository(fromUrl: URL(string: "https://github.com/github/hub.git"))
Next, just call the clone method
try? repository.clone(atPath: "/Users/youruser/hub")
You can specify credentials for repository with a help of GitCredentialsProvider. If no credentials are specified, credentials from the global macOS system git config are used by default.
let credentialsProvider = GitCredentialsProvider(username:"user", password:"****")
let repository = GitRepository(from: URL(string: "https://github.com/github/hub.git"), using: credentialsProvider)
You may keep track of the clone operation progress, by setting a delegate object on repository
let progressTracker = MyCustomObject()
let repository: GitRepository
repository.delegate = progressTracker
// implement RepositoryDelegate protocol in order to track the events
extension MyCustomObject: RepositoryDelegate {
func repository(_ repository: Repository, didProgressClone progress: String) {
}
}