go-vcs is a library for manipulating and inspecting VCS repositories in Go. It currently supports Git and Mercurial (hg).
Note: the public API is experimental and subject to change until further notice.
For hg blame, you need to install hglib: pip install python-hglib
.
go get -u sourcegraph.com/sourcegraph/go-vcs/vcs
The goal is to have all supported backends at feature parity, but until then, consult this table for implementation differences.
Feature | git | gitcmd | hg | hgcmd |
---|---|---|---|---|
vcs.CommitsOptions.Path | :white_large_square: | :white_check_mark: | :white_large_square: | :white_large_square: |
vcs.BranchesOptions.MergedInto | :white_large_square: | :white_check_mark: | :white_large_square: | :white_large_square: |
vcs.BranchesOptions.IncludeCommit | :white_large_square: | :white_check_mark: | :white_large_square: | :white_large_square: |
vcs.BranchesOptions.BehindAheadBranch | :white_large_square: | :white_check_mark: | :white_large_square: | :white_large_square: |
vcs.Repository.Committers | :white_large_square: | :white_check_mark: | :white_large_square: | :white_large_square: |
vcs.FileLister | :white_large_square: | :white_check_mark: | :white_large_square: | :white_large_square: |
vcs.UpdateResult | :white_large_square: | :white_check_mark: | :white_large_square: | :white_large_square: |
Contributions that fill in the gaps are welcome!
You need to install and run the protobuf compiler before you can regenerate Go code after you change the vcs.proto
file.
Install protoc, the protobuf compiler. Find more details in the protobuf README.
On OS X, you can install it with Homebrew by running:
brew install --devel protobuf
Then make sure the protoc
binary is in your $PATH
.
Install gogo/protobuf.
go get -u github.com/gogo/protobuf/...
Install gopathexec
:
go get -u sourcegraph.com/sourcegraph/gopathexec
vcs.proto
go generate sourcegraph.com/sourcegraph/go-vcs/vcs/...
Run go test ./vcs/...
.
See all contributors here.