Wie man "go get" auf einem bestimmten Tag eines GitHub-Repositorys macht
Ich versuche zu kompilieren, die InfluxDB-Datenbank (version v0.8.8) mit go get github.com/influxdb/influxdb
Aber das zieht den master-branch, und ich brauche die v0.8.8
tag.
Habe ich versucht zu tun: go get github.com/influxdb/influxdb/releases/tag/v0.8.8
aber dies scheitert nämlich nicht zu finden.
Ich habe auch versucht zu tun, eine regelmäßige go get
von der master-branch, und dann manuell, Check-out der tag mit git
im GOPATH/src/github...
um die richtige version.
Das problem mit dem letzten Ansatz ist, dass wenn ich versuche zu ziehen, die Abhängigkeiten mit go get -u -f ./...
es versucht, Sie zu finden in den master-Zweig, und einige von Ihnen gibt es nicht auf dem master-branch...
TL;DR: führen go get
auf eine bestimmte github-tag, und ziehen Sie die richtigen Abhängigkeiten.
InformationsquelleAutor der Frage ESala | 2015-05-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist nicht möglich, mit dem
go get
tool. Stattdessen müssen Sie verwenden eine Drittanbieter-go-Paket-management-tool, oder erstellen Sie Ihre eigenen Gabeln für die Pakete, die Sie verwalten möchten mehr feinkörnigen.Sprach mit einem Kerl, der arbeitet bei Google und er hat bestätigt, dass das problem/Anforderung, er sagte, dass vendoring, die sein team verwendet wurde, war sperrig, und Sie werden wahrscheinlich lösen Sie mit dem offiziellen tools bald.
Lesen Sie mehr:
Vendoring in Gehen
Vendoring wurde veröffentlicht von experimentellen in 1.6 gehen (nachdem dieser Beitrag wurde ursprünglich geschrieben), wird der Prozess der Verwendung bestimmter tags /Versionen von Paketen, die Verwendung von Drittanbieter-tools zu erleichtern.
go get
noch nicht über die Funktionalität zum abrufen von bestimmten tags oder Versionen.Mehr darüber, wie vendoring klappt: Verständnis und Verwendung der vendor Ordner
InformationsquelleAutor der Antwort Robin Andersson
Hatte ich Erfolg mit dieser:
InformationsquelleAutor der Antwort Gregory Russell
Ich habe eine (etwas hackish, aber arbeiten) Ansatz zur Lösung dieses Problems, zumindest für git-repositories: Wie gehen Sie ' ed Pakete sind normal Quellcodeverwaltung repositories, man kann check-out-tags mit normalen git-tools (verwenden könnte, git von der Kommandozeile aus, ich bin mit Atlassian SourceTree).
Teilen mein Paket-Konfiguration mit meinem Teamkollegen, die ich gemacht habe, ein git-repository-out-ouf mein GOPATH. Ich habe dann Hinzugefügt, die alle Pakete (zumindest die, die ich wollte, zu verwalten diese Art und Weise), um das repo als git submodule. Dies erfordert, dass Sie zum verschieben der exising repo-Ordner aus dem Weg und re-fügen Sie Sie als git-submodule, um nicht zu verwirren git. Dieser Prozess ist etwas mühsam, aber erwies sich als der Mühe Wert:
Ich kann jetzt mit commit und push-to-meine GOPATH-repo-jeder timy nutze ich ein neues Paket. Wenn meine Teamkollegen ziehen aus diesem repo und git submodule update (oder einfach update über SoureTree, der tut dies automatisch), Ihre version des Pakets wird überprüft-out am gleichen tag wie meine ist.
Natürlich dies funktioniert nur für die Pakete unter git source control...
InformationsquelleAutor der Antwort Peter Hommel
maven-plugin golang ermöglicht spielen mit branch, tag-und revisions-während BEKOMMEN, können Sie einen Blick auf seinen test für solche Fälle mit dem GIT-repository
InformationsquelleAutor der Antwort Igor Maznitsa