Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/masterminds/vcs
VCS Repo management through a common interface in Go
https://github.com/masterminds/vcs
bzr git go golang hg scm svn vcs
Last synced: 5 days ago
JSON representation
VCS Repo management through a common interface in Go
- Host: GitHub
- URL: https://github.com/masterminds/vcs
- Owner: Masterminds
- License: other
- Created: 2015-07-24T16:06:34.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2022-03-31T14:40:37.000Z (over 2 years ago)
- Last Synced: 2024-12-14T11:01:04.551Z (12 days ago)
- Topics: bzr, git, go, golang, hg, scm, svn, vcs
- Language: Go
- Homepage:
- Size: 313 KB
- Stars: 198
- Watchers: 12
- Forks: 60
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# VCS Repository Management for Go
Manage repos in varying version control systems with ease through a common
interface.[![Linux Tests](https://github.com/Masterminds/vcs/actions/workflows/linux-tests.yaml/badge.svg)](https://github.com/Masterminds/vcs/actions/workflows/linux-tests.yaml) [![Go Report Card](https://goreportcard.com/badge/github.com/Masterminds/vcs)](https://goreportcard.com/report/github.com/Masterminds/vcs)
[![Windows Tests](https://github.com/Masterminds/vcs/actions/workflows/windows-tests.yaml/badge.svg)](https://github.com/Masterminds/vcs/actions/workflows/windows-tests.yaml) [![Docs](https://img.shields.io/static/v1?label=docs&message=reference&color=blue)](https://pkg.go.dev/github.com/Masterminds/vcs)**Note: Module names are case sensitive. Please be sure to use `github.com/Masterminds/vcs` with the capital M.**
## 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](https://godoc.org/github.com/Masterminds/vcs).
## 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`.