Ho letto un sacco di articoli e domande SO sull'importazione di pacchetti di terze parti che sembrano tutti diretti, ma quello che non capisco è che nessuno di quelli che ho letto fa alcun riferimento al versioning. In Dartlang è presente il file pubspec che definisce il pacchetto includendo la sua versione e le sue dipendenze, incluse le versioni richieste. Cosa succede se faccio un go get github.com/gorilla/sessions
e scrivo la mia app poi 6 mesi dopo devo cancellare le mie directory e riottenere tutto di nuovo, in quale momento quel pacchetto è stato aggiornato e rotto alla compatibilità con il mio codice che utilizzava la versione precedente?come pacchetti di versione in golang?
risposta
La versione ufficiale, dal GO FAQ:
Se stai usando un pacchetto di alimentazione esterna e la preoccupazione che potrebbe cambiare in modi inaspettati, la soluzione più semplice è quella di copiare al suo repository locale. (Questo è l'approccio che Google prende internamente.) Memorizza la copia in un nuovo percorso di importazione che la identifica come copia locale.
ci sono molte alternative a questo approccio, basato principalmente su dichiarando l'esatta versione di quei progetti che si sta utilizzando.
Si veda ad esempio "Dead Simple Dependencies in Go -- Keep it simple and keep your sanity." (in base a emil2k/vend
)
Le principali opzioni diverse per Go Dipendenza Gestione sono elencati in:
"Go Package Management -- A summary of dependency management in Go"
(E il suo socio GOPM mailing list)
Aggiornamento luglio 2015:
- l'approccio di vendor ufficiale da parte del team Go è discussed here.
- uno strumento di go build alternativo chiamato "gb" è proposto a getgb.io per Dave Cheney.
Aggiornamento Q4 2017: come detto below, go dep
è lo strumento ufficiale per appuntare versione di dipendenze (anche se questo approccio pinning non è esente da critiche: vedi "The cargo cult of versioning").
Dovrebbe essere unito alla toolchain quando inizia lo sviluppo di Go 1.10, according to its roadmap.
Io uso dep
come strumento di gestione delle dipendenze per il progetto golang
. Si prega di utilizzare il seguente collegamento dep tool per maggiori informazioni.
dep
è un prototipo di strumento di gestione delle dipendenze per Go. Richiede Go 1.8 o versioni successive per compilare.
dep
è l'esperimento ufficiale, ma non ancora lo strumento ufficiale.
Stato attuale: novembre 2017
dep
è sicuro per l'uso in produzione.
- 1. Come funzionano i pacchetti in golang
- 2. Golang come importare pacchetti locali senza gopath?
- 3. Come posso ricostruire i pacchetti Golang nativi dopo averli modificati?
- 4. Come funzionano i pacchetti con più file in golang?
- 5. golang: installazione di pacchetti in una directory locale
- 6. Automatizzare incremento versione di R pacchetti
- 7. Come confrontare due stringhe numero di versione nel golang
- 8. impossibile installare pacchetti ("caret") completamente in R versione 3.2.3
- 9. Come inviare una richiesta POST in Golang?
- 10. controllare la versione dei pacchetti pip disponibili prima di installare
- 11. Come posizionare il progetto Golang (una serie di pacchetti) su Github?
- 12. Condivisione di una connessione db globalmente definita con più pacchetti in Golang
- 13. Ora legale in Golang
- 14. Come importare correttamente l'appengine di Golang?
- 15. Come ottenere l'elenco di tutti i pacchetti installati insieme alla versione in compositore?
- 16. Utilizzo di pacchetti binari direttamente
- 17. Come utilizzare Golang per comporre pacchetti TCP non elaborati (usando gopacket) e inviarli tramite socket raw
- 18. Come convertire int in bigint in golang?
- 19. Come utilizzare i pacchetti in Julia Studio
- 20. Esplora pacchetti non mostra ... pacchetti, in Eclipse. Come sistemarlo?
- 21. Puoi far cadere i pacchetti di Golang sulle scritture anziché sul blocco?
- 22. Flag di riga di comando in conflitto Golang
- 23. Fixtures in Golang testing
- 24. Come posso caricare una versione specifica di R in linux?
- 25. Golang logro - come fare una configurazione centralizzata?
- 26. Come si lavora sui pacchetti Oracle in un ambiente collaborativo e controllato dalla versione?
- 27. Caricamento dinamico in Golang?
- 28. funzione Senzacorpo in Golang
- 29. Structures in GoLang
- 30. Come misurare la copertura del test di integrazione di Golang?
+1 per includere buoni collegamenti. Mi piace usare gopkg.in (menzionato nel tuo ultimo link), dato che sembra essere un modo sensato per dichiarare "quale versione voglio?", Come "quale commit hash voglio?" è un po 'criptico per i nuovi sviluppatori che usano qualcosa che hai scritto. – pswaminathan