go-vcs

module
v0.0.0-...-6ab3aac Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 5, 2015 License: Apache-2.0, BSD-2-Clause, BSD-3-Clause

README

go-vcs - manipulate and inspect VCS repositories

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.

Build Status status

Resolving dependencies

The faster libgit2 implementation of git depends on git2go on its next branch. To install it, you will need:

  • cmake
  • pkg-config
  • libssh2
  • libgcrypt

Once you have those prerequisites, follow these steps to install git2go on next branch.

For hg blame, you need to install hglib: pip install python-hglib.

Installing

go get -u sourcegraph.com/sourcegraph/go-vcs/vcs

Implementation differences

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
vcs.BranchesOptions.MergedInto
vcs.BranchesOptions.IncludeCommit
vcs.BranchesOptions.BehindAheadBranch
vcs.Repository.Committers
vcs.FileLister
vcs.UpdateResult

Contributions that fill in the gaps are welcome!

Development

First-time installation of protobuf and other codegen tools

You need to install and run the protobuf compiler before you can regenerate Go code after you change the vcs.proto file.

  1. 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.

  2. Install gogo/protobuf.

    go get -u github.com/gogo/protobuf/...
    
  3. Install gopathexec:

    go get -u sourcegraph.com/sourcegraph/gopathexec
    
Regenerating Go code after changing vcs.proto
go generate sourcegraph.com/sourcegraph/go-vcs/vcs/...
Running tests

Run go test ./vcs/.... You may need to supply linker flags to link with libgit2. If you get a linker error, try running make test instead. If that doesn't work, check the command that make test runs to see if it is using the correct paths on your system.

Note that the tests test the libgit2 implementation and SSH support (see above instructions).

Contributors

See all contributors here.

Directories

Path Synopsis
cmd
go-vcs command
The go-vcs program exposes go-vcs's library functionality through a command-line interface.
The go-vcs program exposes go-vcs's library functionality through a command-line interface.
vcs
Package vcs provides an interface for reading and manipulating repositories in version control systems.
Package vcs provides an interface for reading and manipulating repositories in version control systems.
git
hg
ssh

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL