Pure-Go implementation of Git as a library.
This is a fork of gogits/git (which was originally a fork of speedata/gogit). Unfortunately, gogits/git is no longer maintained and is not accepting PRs, so this is a new extension of that work.
shazow/go-git is not backwards-compatible with gogits/git.
go-git's API should not be considered stable until these goals have been achieved.
- Remove features that depend on shelling out to git.
- Remove redundant features (in progress).
- Add key features to support implementing sourcegraph/go-vcs's Repository interface.
(See shazow/go-vcs#1)
- Walk tree filesystem
- Walk commit ancestry
- Diff
- Blame
- Subrepositories
- Search
- Add a storage driver interface for repositories with virtual/in-memory repository support.
- Improve test coverage.
- Improve query performance with caching and bitmap indexes.
- Rework use of locks (probably get rid of them, require consumer to manage repository locking).
Work on this fork is sponsored by Sourcegraph.
- shazow/go-git changes are released under Apache v2.
- gogits/git (major rewrite of original MIT code) is licensed under Apache v2.
- speedata/gogit is licensed under MIT.