2015-05-12 11 views
47

próbuję skompilować bazę InfluxDB (wersja v0.8.8) używając go get github.com/influxdb/influxdbJak zrobić „idź” na określonym tagu repozytorium github

Ale to ciągnie oddział główny i muszę v0.8.8 etykietka.

Próbowałem zrobić: go get github.com/influxdb/influxdb/releases/tag/v0.8.8, ale to się nie powiedzie, nie można znaleźć.

Próbowałem również zrobić zwykły go get gałęzi głównej, a następnie ręcznie sprawdzić tag przy użyciu git w GOPATH/src/github... w celu ustawienia wersji corret.

Problem przy użyciu ostatniej podejścia jest to, że gdy próbuję wyciągnąć zależności z go get -u -f ./... to próbuje znaleźć je w gałęzi głównej, a niektóre z nich nie istnieją na gałęzi głównej ...

TL; DR: wykonaj go get na konkretnym tagu github i wyciągnij poprawne zależności.

+0

Spróbuj .. git tag -a v0.8.8 - "Twój komentarz" –

+0

@AshokLondhe Pyta jak używać tagu dla 'go get', a nie jak go utworzyć. – wonderb0lt

+0

@ wonderb0lt to polecenie, aby dodać tag. –

Odpowiedz

27

Nie jest to możliwe przy użyciu narzędzia go get. Zamiast tego należy użyć narzędzia do zarządzania pakietami innego producenta lub utworzyć własne rozwidlenia dla pakietów, które chcesz zarządzać bardziej szczegółowymi.

Mówi się facetowi pracującemu w Google i przyznał się do tego problemu/wymagania, powiedział, że sprzedawcy, z których korzystał jego zespół, były nieporęczne i prawdopodobnie wkrótce rozwiążą je oficjalnymi narzędziami.

Więcej:

Vendoring Przejdź

Vendoring został released from experimental in go 1.6 (po ten post został napisany), który sprawia, że proces korzystania z konkretnych tagów/wersji pakietów przy użyciu narzędzi stron trzecich jest łatwiejszy. go get nadal nie ma funkcji pobierania konkretnych tagów lub wersji.

Więcej o dziełach jak vendoring: Understanding and using the vendor folder

+1

Czy możesz opracować nieco więcej o części Google? Jest duża dyskusja na ten temat na liście mailingowej społeczności go, czy jest tam jakikolwiek inny kierunek, który nie był tam dyskutowany? –

+1

@Not_a_Golfer To był facet, który nie należał do zespołu Go, ale mówił o tym, że obecnie używają sprzedawców wewnętrznie i że jest dość nieporęczny. Więc mieli interes w lepszym rozwiązaniu go za pomocą oficjalnych narzędzi. Pomyśl, że to nieoficjalne oświadczenie, sprawi, że będzie to bardziej jasne. –

+2

AFAIK, jedyna propozycja dotyczy oficjalnego formatu pliku dostawcy/zależności. Jest to wciąż świetne, ponieważ projekty nie byłyby powiązane z narzędziem zależności i mogą współpracować z dowolnymi rozwiązaniami, których potrzebują (tj. Wolę blokowanie wersji, podczas gdy inne preferują vending). – JimB

1

mam (nieco hackish, ale pracy) podejścia do rozwiązania tego problemu, przynajmniej dla repozytoriów git: Jak przejść get'ed pakiety są normalne repozytoriów kontroli źródła, jeden mogę sprawdzić znaczniki używając zwykłych narzędzi git (mogłem użyć git z linii poleceń, używam Atlassian SourceTree).

Aby udostępnić moją konfigurację paczki moim kolegom z drużyny, przygotowałem repozytorium git z mojego GOPATH. Następnie dodałem wszystkie pakiety (przynajmniej te, które chciałem zarządzać w ten sposób) do tego repo jako modułu git. Wymaga to przeniesienia istniejących folderów repo z drogi i ponownego dodania ich jako modułu git, aby nie mylić git. Ten proces jest dość uciążliwy, ale okazał się warty problemów:

Mogę teraz zatwierdzić i popchnąć moje GOPATH-repo za każdym razem, gdy używam nowego pakietu go.Kiedy moi koledzy wyciągną z tego repozytorium i wydadzą aktualizację podmodułu git (lub po prostu zaktualizują przez SoureTree, co robi to automatycznie), ich wersja pakietu zostanie pobrana na tym samym tagu co mój.

Oczywiście to działa tylko dla pakietów pod kontrolą źródłowego git ...

4

miałem powodzenia z tym:

  • Uruchom komendę get bez metki - należy sklonować mistrza gałąź.
  • Przejdź do katalogu klonów i sprawdź wybrany znacznik lub gałąź.
  • Ponownie uruchom komendę go get, powinna przetworzyć polecenie w wyrejestrowanym oddziale.
+2

Przy pierwszym uruchomieniu można użyć 'go get -d ', aby pobrać pakiety i pominąć instalację. – webwurst

+0

To jest, co powinno być używane, gdy potrzebujesz konkretnego tagu, gopkg.in jest zbyt restrykcyjne. –

Powiązane problemy