ESala ESala - 2 months ago 11
Git Question

How to do "go get" on a specific tag of a github repository

I am trying to compile the InfluxDB database (version v0.8.8) using

go get github.com/influxdb/influxdb


But this pulls the master branch, and I need the
v0.8.8
tag.

I have tried to do:
go get github.com/influxdb/influxdb/releases/tag/v0.8.8
but this fails saying unable to find.

I also tried to do a regular
go get
of the master branch, and then manually checking out the tag using
git
in
GOPATH/src/github...
in order to set the corret version.

The problem using the last approach is that when I try to pull the dependencies with
go get -u -f ./...
it tries to find them in the master branch, and some of them do not exist on the master branch...

TL;DR: perform
go get
on a specific github tag, and pull the correct dependencies.

Answer

It is not possible using the go get tool. Instead you need to use a third party go package management tool or create your own forks for the packages that you wish to manage more fine grained.

Spoke to a guy that works at Google and he acknowledged this problem/requirement, he said that vendoring which his team used was bulky and they will probably solve it with the official tools soon.

Read more:

Vendoring in Go

Vendoring has been released from experimental in go 1.6 (after this post was initially written) that makes the process of using specific tags / versions of packages using third party tools easier. go get does still not have the functionality to fetch specific tags or versions.

More about how vendoring works: Understanding and using the vendor folder