de Ying Kit Yuen

O introducere în dep: Cum să vă gestionați dependențele de proiect Golang

O introducere in dep Cum sa va gestionati dependentele de
dep – Un instrument de gestionare a dependenței Go

Actualizare @ 2018–11–26: tehnologia nu se mișcă doar la o viteză vertiginoasă, ci și se schimbă rapid. În termen de un an, acest articol este ÎNVECHIT!

Și în conformitate cu pagina proiectului dep:

dep a fost „experimentul oficial”. Lanțul de instrumente Go, începând cu 1.11, a adoptat (experimental) o abordare care diferă brusc de dep. Ca rezultat, continuăm dezvoltarea dep, dar orientăm activitatea în primul rând spre dezvoltarea unui prototip alternativ pentru comportarea versiunilor în lanțul de instrumente.

Pentru mai multe informații despre noul management integrat Go, vă rugăm să consultați GitHub Wiki oficial – Mergeți 1.11 Module.

Mulțumiri John Arundel @bitfield și Erhan Yakut @yakuter pentru dezvăluirea problemei. ?

Actualizare @ 2018-02-03: Sam Boyer de la echipa Godep a clarificat câteva informații incorecte în acest articol. Îmi cer scuze Sam Boyer și cititorilor pentru orice inconvenient. ?

Anterior, am postat un articol despre gestionarea dependenței în Merge folosind Alunecare. Am primit un feedback care Alunecare va deveni învechit. Alunecare echipa sugerează utilizatorilor să se mute la un alt instrument de gestionare a dependenței numit dep scris de Golang echipă.

Comunitatea Go are acum proiectul dep pentru gestionarea dependențelor. Vă rugăm să luați în considerare încercarea de a migra de la Glide la dep. Glide va continua să fie acceptat pentru o perioadă de timp, dar este considerat a fi într-o stare de suport mai degrabă decât în ​​dezvoltarea activă a caracteristicilor.

Există un plan despre integrare dep în lanțul de instrumente din Mergeți la versiunea 1.10, dar pare mai are o cale de parcurs.

Actualizare @ 2018-02-03:

  • dep este lansat oficial.
  • dep nu se deplasează în lanțul de instrumente cu 1.10. vă rugăm să consultați foaie de parcurs pentru cele mai recente informații.
O introducere in dep Cum sa va gestionati dependentele de
Și pur și simplu nu sunt suficient de rapid. ?

Creați proiectul în interiorul $ GOPATH

Dosarul proiectului trebuie să fie în interior $ GOPATH pentru a rezolva Mergecăi de pachet. Să creăm un nou proiect la $ GOPATH / src / gitlab.com / ykyuen / dep-example și adăugați următorul fișier.

main.go

Calea dep

Gopkg.toml și Gopkg.lock

dep citește două fișiere numite Gopkg.toml si Gopkg.lock. Să inițializăm aceste 2 fișiere folosind dep init comanda.

[ykyuen@camus dep-example]$ dep init  Using master as constraint for direct dep github.com/dustin/go-humanize  Locking in master (bb3d318) for direct dep github.com/dustin/go-humanize

După cum puteți vedea, dep init comanda scanează codurile sursă și descarcă toate pachetele necesare proiectului în vânzător pliant.

Gopkg.lock servește exact aceeași funcție ca glide.lock fişier. Blochează versiunea pachetelor CU EXCEPTIA versiunea ar trebui menținută în Gopkg.toml. Pe scurt, Gopkg.lock fișierul este generat automat și depinde de import declarații în versiunea sursă controlată de Gopkg.toml.

1612150567 919 O introducere in dep Cum sa va gestionati dependentele de

Actualizați versiunea dependenței

Să edităm Gopkg.toml și utilizați o versiune ceva mai veche a du-te umanizează pachet în locul celei mai recente ramuri master.

Atunci fugi dep asigura pentru a actualiza pachetul la versiunea dorită. Următorul este diferența actualizatului Gopkg.lock.

Adăugați o nouă dependență

Un nou pachet ar putea fi adăugat folosind dep assure -add comanda.

[ykyuen@camus dep-example]$ dep ensure -add github.com/leekchan/accountingFetching sources...
"github.com/leekchan/accounting" is not imported by your project, and has been temporarily added to Gopkg.lock and vendor/.If you run "dep ensure" again before actually importing it, it will disappear from Gopkg.lock and vendor/.

Acum avem noul contabilitate pachet gata în vânzător folder cu noi constrângeri scrise în Gopkg.toml și închis Gopkg.lock. Să actualizăm main.go după cum urmează.

main.go

Și rulați-l.

[ykyuen@camus dep-example]$ go run main.gohello worldThat file is 83 MB.You're my 193rd best friend.You owe $6,582,491.$123,456,789.21$12,345,678.00$25,925,925.67-$25,925,925.67$123,456,789.21

Problema cu submodulul git

O diferență majoră de dep comparativ cu Alunecare este submodulul pachetului este ignorat. De exemplu, după adăugarea go-goracle / goracle pachet de dep, odpi submodulul din interior este gol și duce la erori. Motivul abandonării submodulului poate fi găsit la următorul link.

Actualizare @ 2018-02-03:

Paragraful despre submodulele Git este incorect.

Sam Boyer a scris:

dep ar trebui să fie perfect la extragerea submodulelor git în cazul pe care îl descrieți. Tocmai am replicat ceea ce descrieți aici local, iar problema nu este submodule – este că nu există cod Go în github.com/go-goracle/goracle/odpi, deci nu poate fi importat direct.

Probabil că trebuie să dezactivați tăierea pachetelor neutilizate în Gopkg.toml în mod specific pentru acel proiect, deoarece altfel dep asigura va elimina automat ceea ce pare a fi neutilizat direct (dar se pare că este de fapt folosit de cgo).

Actualizare @ 2018-03-04:

Se constată că go-goracle / goracle pachetul nu funcționează cu dep. Puteți urmări problema de mai jos și puteți verifica cea mai recentă actualizare din dep echipă.

rezumat

  • Dep Este cel mai probabil a fi oficiale pentru Dependență Management Toole în ̶̵̶G̶̵̶o̶̵̶l̶̵̶a̶̵̶n̶̵̶g̶̵̶ ̶̵̶c̶̵̶o̶̵̶m̶̵̶m̶̵̶u̶̵̶n̶̵̶i̶̵̶t̶̵̶y̶̵̶.̶̵̶
  • I̶̵̶f̶̵̶ ̶̵̶y̶̵̶o̶̵̶u̶̵̶ ̶̵̶a̶̵̶r̶̵̶e̶̵̶ ̶̵̶s̶̵̶t̶̵̶a̶̵̶r̶̵̶t̶̵̶i̶̵̶n̶̵̶g̶̵̶ ̶̵̶a̶̵̶ ̶̵̶n̶̵̶e̶̵̶w̶̵̶ ̶̵̶G̶̵̶o̶̵̶l̶̵̶a̶̵̶n̶̵̶g̶̵̶ ̶̵̶p̶̵̶r̶̵̶o̶̵̶j̶̵̶e̶̵̶c̶̵̶t̶̵̶, ̶̵̶ ̶̵̶d̶̵̶e̶̵̶p̶̵̶ ̶̵̶i̶̵̶̶̵̶̶̵̶̶̵̶̶̵̶̶̵̶̶̵̶̶̵̶̶̵̶̶̵̶̶̵̶̶̵̶̶̵̶̶̵̶̶̵̶̶̵̶̶̵̶̶̵̶̶̵̶
  • Dacă utilizați Glide într-o LEGACY ̶p̶r̶o̶j̶e̶c̶t̶.̶ vă recomandăm să migrați de a Dep dar cred că atunci se poate a utiliza în continuare Glide pentru un timp, până la Dep ̶r̶e̶l̶e̶a̶s̶e̶d̶.̶ oficial
  • În plus, ̶ Missing ̶p̶a̶c̶k̶a̶g̶e̶’̶s̶ Submodule poate duce la funcționarea necorespunzătoare a ̶c̶o̶d̶e̶.̶-ul
  • dep este lansat oficial.
  • dep funcționează bine la tragerea submodulului git.
  • Utilizați biblioteca standard ori de câte ori este posibil. (Sugerat de philoserf)
  • Puteți verifica acest exemplu pe gitlab.com.

– Postat inițial pe Blogul Boatswain.