gvp stands for Go Versioning Packager and is based on gst, a similar tool that provides dependency isolation for Ruby gems.
The tool modifies your
GOPATH to point to a local
.godeps/ directory so that you can keep the dependencies of your project isolated there, it also modifies
PATH to include the new
gvp is a companion tool to gpm, the Go Package Manager.
gpm + gvp:Example usage: Go Dependency Management and Vendoring with
Install via Homebrew
$ brew install gvp
Install in *nix
$ git clone https://github.com/pote/gvp.git && cd gvp $ git checkout v0.0.3 # You can ignore this part if you want to install HEAD. $ ./configure $ make install
gvp is a script and runs in a child environment of your shell, the latter will not take the env changes unless you
$ gvp init $ source gvp in $ source gvp out
init Creates the .godeps directory in Modifies GOPATH, GOBIN and PATH to use the .godeps out Restores the previous GOPATH, GOBIN and PATH. version outputs version information. help prints this message.
Dependencies of multiple Go projects are by far easier to handle in isolation, using plain gpm to handle your dependencies means that you are forced to run it again every time you work on a new project, this can get old quickly.
gvp can greatly simplify your workflow, by isolating your Go project dependencies you only need to run
source gvp in
in order to be back in the work environment of your application, this means that there will never be Go packages installed in
your system which will conflict in versioning across your different projects.
If for some reason you need to ship your repository with its dependencies included this is also of help, but including a
Godeps file to use with gpm will probably be your best option.