Cloning remote repositories (git clone and git fetch). Including shallow clone support (--depth option);
Getting the list of references (branches, tags) in repositories;
Checking out references (git checkout);
Working with remotes (listing, renaming, setting urls);
Committing local changes and pushing to a remote repository (git commit and git push);
Getting log records for a repository (git log);
Listing pending log records (committed locally, but not pushed yet) and upcoming log records (commited on a remote, but not presented in the working copy)
Working with stashes (git stash);
Basic merge (git merge);
Git.framework has no dependencies. Just clone and build.
Requirements
macOS 10.12+
Xcode 10+
Swift 4.2+
Git for Mac 2.15+
Installation
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
Carthage
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" ~> 2.1.0
Run carthage update to build the framework and drag the built Git.framework into your Xcode project.
Swift 4.2
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
Manually
You can install Git.framework manually. Clone the project locally, build and integrate to your project as a framework
Swift Package dependency
When you want to use Git.framework as a dependency in other package, you may follow the given example:
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)
Receiving the progress
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) {
}
}
Git.framework
Git is a high-level swift framework based on the command line Git utility in macOS.
Features
git clone
andgit fetch
). Including shallow clone support (--depth
option);git checkout
);git commit
andgit push
);git log
);git stash
);git merge
);Git.framework
has no dependencies. Just clone and build.Requirements
Installation
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:
Carthage
To install Carthage you can use Homebrew. Use the following command in Terminal app:
To integrate Git.framework into your Xcode project using Carthage, specify it in your
Cartfile
:Run
carthage update
to build the framework and drag the builtGit.framework
into your Xcode project.Swift 4.2
If you want to use
Git.framework
on Xcode 10.1 or lower, please use version1.5.1
Manually
You can install Git.framework manually. Clone the project locally, build and integrate to your project as a framework
Swift Package dependency
When you want to use Git.framework as a dependency in other package, you may follow the given example:
Basics
Read more about
Git.framework
in the Wiki page:Quick examples
Simple clone
To clone a remote repository you need to create an object GitRepository
Next, just call the clone method
Providing credentials
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.
Receiving the progress
You may keep track of the clone operation progress, by setting a delegate object on repository