Skip to content

Masterminds/vcs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

92b5758 · Apr 24, 2017
Jul 24, 2015
Mar 23, 2017
Mar 24, 2017
Aug 11, 2015
Jan 5, 2017
Jan 17, 2017
Jan 11, 2017
Jan 5, 2017
Jan 24, 2017
Jan 5, 2017
Apr 13, 2016
Apr 24, 2017
Apr 21, 2017
May 4, 2016
Jan 5, 2017
Jan 5, 2017
Jan 29, 2017
Jan 13, 2017
Jan 24, 2017
Jan 13, 2017
Jan 13, 2017
Jan 5, 2017
Jan 13, 2017

Repository files navigation

VCS Repository Management for Go

Manage repos in varying version control systems with ease through a common interface.

Build Status GoDoc Go Report Card Build status

Quick Usage

Quick usage:

remote := "https://github.com/Masterminds/vcs"
local, _ := ioutil.TempDir("", "go-vcs")
repo, err := NewRepo(remote, local)

In this case NewRepo will detect the VCS is Git and return a GitRepo. All of the repos implement the Repo interface with a common set of features between them.

Supported VCS

Git, SVN, Bazaar (Bzr), and Mercurial (Hg) are currently supported. They each have their own type (e.g., GitRepo) that follow a simple naming pattern. Each type implements the Repo interface and has a constructor (e.g., NewGitRepo). The constructors have the same signature as NewRepo.

Features

  • Clone or checkout a repository depending on the version control system.
  • Pull updates to a repository.
  • Get the currently checked out commit id.
  • Checkout a commit id, branch, or tag (depending on the availability in the VCS).
  • Get a list of tags and branches in the VCS.
  • Check if a string value is a valid reference within the VCS.
  • More...

For more details see the documentation.

Motivation

The package golang.org/x/tools/go/vcs provides some valuable functionality for working with packages in repositories in varying source control management systems. That package, while useful and well tested, is designed with a specific purpose in mind. Our uses went beyond the scope of that package. To implement our scope we built a package that went beyond the functionality and scope of golang.org/x/tools/go/vcs.