2017-06-28 41 views
6

Pracuję nad projektem Go, który używa Glide do zarządzania zależnościami. Muszę wprowadzić zmiany do projektu, ale także do kilku zależności używanych przez projekt. Muszę przetestować te zmiany razem, zanim wprowadzę zmiany do każdego projektu osobno.Jak korzystać z lokalnych wersji zależności szybowania?

Jak mogę powiedzieć, aby Glide (lub Go) używać lokalnych wersji tych projektów (np. W $GOPATH/src/...) zamiast wyciągać coś i umieszczać w katalogu vendor?

Aby dać przykład:

  • github.com/hyperledger/burrow zależy od:
  • github.com/tendermint/tendermint, który zależy od:
  • github.com/tendermint/go-crypto

muszę dokonać pewnych zmian obejmujących wszystkie trzy projekty. Chcę przetestować zmiany przez wykonywanie rzeczy w projekcie burrow, ale potrzebuję go do wykonania moich wersji rozwojowych tendermint i go-crypto, które mam lokalnie.

Odpowiedz

6

Jeśli chcesz przetestować zależności pod "$ GOPATH/src/..." po prostu usuń tymczasowo każdy plik glide w katalogu głównym projektu (glide.yaml, glide.lock, etc ...). Następnie możesz przywrócić te pliki, jeśli chcesz ponownie użyć zależności "dostawcy".

Update 1

Szukałem tego samego rozwiązania dla moich projektów potem zorientowali się, że dokumentacja schodzenia określa dodatkowy przydatny parametr na glide.yaml dla importu. Według the official documentation:

repo: Jeśli nazwa pakietu nie jest lokalizacja repo lub jest to prywatny repozytorium można go tutaj. Pakiet zostanie wyewidencjonowany z repozytorium i umieszczany tam, gdzie określa się nazwę pakietu. Umożliwia to używanie wideł.

W takim przypadku wystarczy wcisnąć swój kod gdzieś (GitHub lub Gitlab prywatnych repo Twojego $ GOPATH/src/github.com/hyperledger/nory chyba) następnie edytować glide.yaml:

- package: github.com/tendermint/tendermint <-- vendor name dependencies 
    repo: github.com/myrepo/tendermint <-- your remote fork 
    version: vx.x.x or your sha commit code 

W ten sposób można przełączyć się z oficjalnej wersji na widelec i wykonać testy. zawrócić do oficjalnej wersji po prostu usunąć lub komentarz repo oraz wersję atrybuty:

- package: github.com/tendermint/tendermint <-- vendor name dependencies 
# repo: github.com/myrepo/tendermint <-- your remote fork 
# version: vx.x.x or your sha commit code 

jestem testowania moje widły w ten sposób teraz i nie trzeba, aby zmienić swoje ścieżki importu do kodu, nadzieja to pomaga.

Aktualizacja 2

Innym dobrym sposobem jest użycie glide mirror:

lusterka zapewniają możliwość wymiany lokalizację repo z inną lokalizację, która jest lustrzanym odbiciem oryginału. Jest to przydatne, gdy chcesz mieć pamięć podręczną dla swojego ciągłego systemu integracji (CI) lub jeśli chcesz pracować nad zależnością w lokalizacji lokalnej w lokalizacji .

Chyba ten jest najlepszym rozwiązaniem, na przykład, od rodzaju linii poleceń:

$ glide mirror set github.com/tendermint/tendermint file:///User/yourname/Gospace/src/github.com/tendermint/tendermint 

To stworzy mirror.yaml w swoim GLIDE_HOME (jeśli nie istnieje, zostanie umieszczony pod swój Folder $ USER/.glide). Teraz możesz przetestować lokalną wersję (pod GOPATH) bez rozwidlenia projektu (jak napisałem powyżej). Po zakończeniu testów po prostu usunąć go:

$ glide mirror remove github.com/tendermint/tendermint 
+0

Potrzebuję użyć kombinacji zależności dostawcy i wersje lokalne. Domyślam się, że hacky to zabicie wybranych katalogów pod 'sprzedawca/...' ale chciałem sprawdzić, czy istnieje lepszy/oficjalny sposób na to. –

+0

to jest poprawne. usuń z 'dostawcy' pakiety, na których polegasz i którymi chcesz pracować. unikaj dowiązań symbolicznych, polegaj na wewnętrznej strategii go, aby rozwiązać zależność. –

4

Uwzględniając vendoring Go najpierw patrząc pakietów w katalogu głównym projektu /vendor folderu, a kiedy nie znaleziono potem w GOPATH i że Glide instaluje swoje zależności do Folder /vendor oznacza, że ​​możesz po prostu skonfigurować swój projekt za pomocą glide install, a następnie ręcznie usunąć zależności, które zostały lokalnie zmodyfikowane (lub zamierzasz je zmodyfikować) w swoich lokalnych instalacjach z folderu projektu /vendor, a następnie przejdź do sprzedawcy, a następnie wybierz lokalnie zmodyfikowane wersje znalezione pod GOPATH.

Po przetestowaniu wszystkiego należy najpierw zatwierdzić wszystkie zmodyfikowane zależności, a następnie wrócić do projektu i zmodyfikować plik glide.yaml, aby użyć nowych wersji tych zależności.

To powinno zadziałać.