Glide 0.8.0 Released - Manage Go Dependencies Like Other Languages

With the release of Glide 0.8.0, there is now a way to manage packages in Go along the same lines as other languages such as Rust, PHP, JavaScript, Ruby, and many other languages. While there are a number of new features I'm going to touch on a few that make this possible.

Using package managers in these languages you can define the use of a dependency, in a file, and a supported version range (e.g., >= 1.2.3, < 2.0.0 or in shorthand as ^1.2.3). To have consistent reproducible builds you can also pin to specific versions. Glide now supports this ability.

Glide 0.8.0 adds a glide.lock file. This file, generated when glide update is run, contains the entire dependency tree and the commit id for each dependency. This includes the complete dependency tree which means dependencies of dependencies or dependencies and so on. It's also smart enough to get the version information from Godep, GPM, and GB when those configuration files are available. We recommend storing the glide.lock file in your VCS alongside your glide.yaml file.

To install what's defined in the glide.lock file you can run glide install. This operation is fairly fast as fetching updates and setting versions uses concurrency to speed up the process. It's also smart enough to make sure the lockfile is a match for the glide.yaml file so they don't get out of sync.

When no glide.lock file exists the glide install command runs glide update.

For more details on the other changes see the release notes.