You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Sep 11, 2020. It is now read-only.
A highly extensible git implementation in **pure Go**.
4
+
*go-git* is a highly extensible git implementation library written in **pure Go**.
4
5
5
-
*go-git* aims to reach the completeness of [libgit2](https://libgit2.github.com/) or [jgit](http://www.eclipse.org/jgit/), nowadays covers the **majority** of the plumbing **read operations** and **some**of the main **write operations**, but lacks the main porcelain operations such as merges.
6
+
It can be used to manipulate git repositories at low level *(plumbing)* or high level *(porcelain)*, through an idiomatic Go API. It also supports several type of storage, such as in-memory filesystems, or custom implementations thanks to the [`Storer`](https://godoc.org/gopkg.in/src-d/go-git.v4/plumbing/storer) interface.
6
7
7
-
It is **highly extensible**, we have been following the open/close principle in its design to facilitate extensions, mainly focusing the efforts on the persistence of the objects.
8
+
It's being actively develop since 2015 and is being use extensively by [source{d}](https://sourced.tech/) and [Keybase](https://keybase.io/blog/encrypted-git-for-everyone), and by many other libraries and tools.
8
9
9
-
### ... is this production ready?
10
+
Comparison with git
11
+
-------------------
10
12
11
-
The master branch represents the `v4` of the library, it is currently under active development and is planned to be released in early 2017.
13
+
*go-git* aims to be fully compatible with [git](https://github.com/git/git), all the *porcelain* operations are implemented to work exactly as *git* does.
12
14
13
-
If you are looking for a production ready version, please take a look to the [`v3`](https://github.com/src-d/go-git/tree/v3) which is being used in production at [source{d}](http://sourced.tech) since August 2015 to analyze all GitHub public repositories (i.e. 16M repositories).
15
+
*git* is a humongous project with years of development by thousands of contributors, making it challenging for *go-git* implement all the features. You can find a comparison of *go-git* vs *git* in the [compatibility documentation](COMPATIBILITY.md).
14
16
15
-
We recommend the use of `v4` to develop new projects since it includes much new functionality and provides a more *idiomatic git* API
16
17
17
18
Installation
18
19
------------
@@ -23,6 +24,7 @@ The recommended way to install *go-git* is:
23
24
go get -u gopkg.in/src-d/go-git.v4/...
24
25
```
25
26
27
+
> We use [gopkg.in](http://labix.org/gopkg.in) for having a versioned API, this means that when `go get` clones the package, is the latest tag matching `v4.*` cloned and not the master branch.
You can find this [example](_examples/log/main.go) and many other at the [examples](_examples) folder
112
-
113
-
Comparison With Git
114
-
-------------------
115
-
116
-
In the [compatibility documentation](COMPATIBILITY.md) you can find a comparison
117
-
table of git with go-git.
113
+
You can find this [example](_examples/log/main.go) and many others at the [examples](_examples) folder
118
114
119
115
Contribute
120
116
----------
121
117
122
-
If you are interested in contributing to go-git, open an [issue](https://github.com/src-d/go-git/issues) explaining which missing functionality you want to work on, and we will guide you through the implementation.
118
+
[Contributions](https://github.com/src-d/go-git/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) are more than welcome, if you are interested please take a look to
119
+
our [Contributing Guidelines](CONTRIBUTING.md).
123
120
124
121
License
125
122
-------
126
-
127
-
MIT, see [LICENSE](LICENSE)
123
+
Apache License Version 2.0, see [LICENSE](LICENSE)
0 commit comments