Управление на зависимости

19.12.2018

Но преди това

Въпроси за мъфини

Върпос #1

Върпос #2

Върпос #3

Върпос #4

Днес

Зависимости?

Аз съм независим човек, не ми трябват!

Зависимости

На кратко това е:

Това е лесно! Нали?

Проблемите

Живота в свят след `leftpad`

Повторими строежи

Задача!

Ако Иво и Дойчо build-нат commit на go проект, един и същи ли ще е резултата?

За нещастие - не.

Неповторими build-ове?

Къде е проблема?

Защо ни е това?

О, това изглежда важно!

Значи има решение още от самото начало на езика, нали?

Само да можех да опиша кои версии точно искам!

Как се прави това? Нещо с go tool-а, нали?

😱

История

Иструментите

Това породи цяла зоогическа градина от иструменти, които го правят. Някои от тях:

glide, godep, govendor, vendor, godm, vendetta, gsv, gom, govend и много други

Как работи това?

dep

Известно време се използваше зоогическата градина от инструменти.

От Go екипа преди около 3 години решиха да направят официален "експеримент" - dep.

daily dep

`Gopkg.toml` и `Gopkg.lock`

Първия държи какво желаете

Втория държи кои точно версии са били намерени

`Gopkg.toml`

[[constraint]]
  name = "github.com/gorilla/mux"
  version = "1.6.2"

[[constraint]]
  name = "github.com/howeyc/fsnotify"
  version = "0.9.0"

[[constraint]]
  branch = "master"
  name = "github.com/ironsmile/sql-migrate"

go modules

go modules (2)

go modules (3)

go mod init

Demo

Въпроси?