Vendoring for Go language is best presented in Go 1.5 documentation:

Go 1.5 includes experimental support for using local copies of external dependencies to satisfy imports of those dependencies, often referred to as vendoring. Setting the environment variable GO15VENDOREXPERIMENT=1 enables that experimental support. When the vendor experiment is enabled, code below a directory named “vendor” is importable only by code in the directory tree rooted at the parent of “vendor”, and only using an import path that omits the prefix up to and including the vendor element.

You can read further in Go 1.5 Vendor Experiment design document.

There is a list of tools supporting this feature in Package Management Tools wiki page. I have tested these in a corporate environment (Github Enterpise, firewalls, proxies etc.) for two projects with internal and external dependencies. Starting with the most popular tool, I have used each tool for “saving dependencies” and “updating dependencies”. I have listed the important points and problems occurred with their related Github issues.

Let’s get started:

godep

2919 stars, 257 forks