Properties

Last built 2 years ago using go version go1.5 linux/amd64 and 625 seconds of time

Downloads
Filename
File Size
 
gvt_master_darwin-386.zip
2.6MiB
gvt_master_darwin-amd64.zip
2.8MiB
gvt_master_linux-386.zip
2.6MiB
gvt_master_linux-amd64.zip
2.8MiB
gvt_master_linux-arm.zip
2.5MiB
gvt_master_windows-386.zip
2.6MiB
gvt_master_windows-amd64.zip
2.8MiB
Project-Readme for this version

gvt, the go vendoring tool

gvt is a simple Go vendoring tool made for the GO15VENDOREXPERIMENT.
It’s based entirely on gb-vendor.

You run gvt fetch when you would run go get. gvt downloads packages to ./vendor/.... With GO15VENDOREXPERIMENT=1 set the compiler will find and use those dependencies without import path rewriting. gvt works recursively as you would expect, and lets you update vendored dependencies. It also writes a manifest to ./vendor/manifest.

Packages whose dependencies are vendored with gvt are go build-able and go get-able by Go 1.5 with GO15VENDOREXPERIMENT=1 set.

Installation

go get -u github.com/FiloSottile/gvt

Usage

$ gvt fetch github.com/fatih/color
2015/09/05 02:38:06 fetching recursive dependency github.com/mattn/go-isatty
2015/09/05 02:38:07 fetching recursive dependency github.com/shiena/ansicolor

$ tree -d
.
└── vendor
    └── github.com
        ├── fatih
        │   └── color
        ├── mattn
        │   └── go-isatty
        └── shiena
            └── ansicolor
                └── ansicolor

9 directories

$ cat > main.go
package main
import "github.com/fatih/color"
func main() {
    color.Red("Hello, world!")
}

$ export GO15VENDOREXPERIMENT=1

$ go build .

$ ./hello
Hello, world!

$ gvt update github.com/fatih/color

Full usage on GoDoc GoDoc

Why

There are many Go vendoring tools, but they all have some subset of the following problems

  • no GO15VENDOREXPERIMENT support: old tools are based on import path rewriting or GOPATH overrides
  • requirement to run on clients: some require the user to install the tool and run it after cloning, which breaks go get
  • no real fetching support: tools like Godep just copy packages from your GOPATH, instead of pulling it from the Internet
  • prominent metadata files: there’s no need for the manifest to be in your repository root, or in its own empty folder
  • different build stack: gb-vendor is awesome but it requires you to build your project with gb