Anton
У тебя ограниченный набор типов? Или тебе хочется сохранять любые структуры?
пока ограниченый, но подозреваю, что он будет расширяться
Daniel
потому что ты пишешь "должно", "смысла нет", а почему так надо делать забыл сказать.
Ну я решил, что это очевидно. Нет? Тогда расскажи, зачем нужен вендор, и как он свои задачи будет выполнять, если его в репу не класть. Я думаю, все станет очевидно, пока рассказывать будешь...
andrei
ща бы генерики...
Axm
Ну я решил, что это очевидно. Нет? Тогда расскажи, зачем нужен вендор, и как он свои задачи будет выполнять, если его в репу не класть. Я думаю, все станет очевидно, пока рассказывать будешь...
я пока еще новичок в го, поэтому могу ошибаться. думаю, чтобы не держать в репе чужое говно, которое там не нужно, чтобы не засирать реквесты и коммиты. для меня смысл dep или glide в том, что ты выполнил команду и они сами скачали нужную версию зависимости, ту что ты прописал в Gopkg.toml. ну то есть, я ожидаю такого поведения от этих инструментов.
Daniel
Я повторю вопрос - а если репа удалена?
Anton
в чем прикол зависимостей, которые надо хранить в своем репо
Anton
Я повторю вопрос - а если репа удалена?
такой риск существует для всех пакетных менеджеров различных языков, насколько я понимаю
Daniel
Дело не в самих зависимостях, а в фиксации версий и доступности
Daniel
Очевидно?
Anton
вполне, но от этого в остальных языках ведь не считается хорошей практикой коммитить зависимости
Anton
хотя там тоже такой риск есть
Anonymous
в чем прикол зависимостей, которые надо хранить в своем репо
Я бы ещё копию исходников компилятора (или бинарник) держал бы поближе, а то мало ли Роскомпозор заблочит golang.org ))
Daniel
Других - каких?
Мерль
пока ограниченый, но подозреваю, что он будет расширяться
Можно примерно вот так https://play.golang.org/p/wjKGsJRiBZ
Anton
Других - каких?
В пхп - composer.json, в js - package.json, bower.json и куча других
Мерль
спасибо!
Так у тебя с одной стороны обеспечивается полиморфизм, а с другой стороны в функцию попадёт только то, что нужно и это проверяется на стадии компиляции
Мерль
Oleg
Зло!
Необходимое зло
Мерль
Зло от безысходности
Axm
В пхп - composer.json, в js - package.json, bower.json и куча других
вот да, сюда же и дотнет с nuget. никто никогда не коммитит чужой код в свою репу. и я пока не понял, почему в go так делают. спросил коллег, у нас в компании не принято держать вендор в репе.
Daniel
из интернета удалена?
Есть прекрасная недавняя история про логрус
Axm
я знаю
Daniel
В пхп - composer.json, в js - package.json, bower.json и куча других
В упомянутых языках репа нужна не только программеру, но и пользователю. Коммитить себе в репу смысла нет. "Куча других" - вообще не язык
Axm
но ведь уже собраные бинарники будут работать, верно?
Daniel
Верно
Axm
ну вот, а поправить код, тем более автозаменой, как в случае с логрусом, это говно вопрос
Axm
короче я за то, чтобы не сидеть в землянке с тушенкой в ожидании ядерного пиздеца, а спокойно жить, решая проблемы по мере поступления.
Axm
ни на одном проекте на дотнете, где я участвовал, пока не было критических проблем из-за зависимостей, которые мы бы не смогли быстро поправить.
Daniel
поясни свой тезис про пользователя
Либы нужны для запуска твоего приложения. Что в интерпретаторах, что в дотнете с динамической линковкой
Daniel
Для запуска - не нужны.
Daniel
Есть подозрение, что вы просто плохо знакомы с матчастью, коллеги...
Aleksandr
Для запуска - не нужны.
мне при отладке приложения в иде нужны.
Daniel
Нет?
Daniel
Тогда мы понимаем, что в го не надо дистрибутить либы на компы пользователей, да? И это очевидная разница, правда? А вы просто едите мне мозг, так?
Daniel
Все-таки - плохое знание матчасти :(
Aleksandr
Все-таки - плохое знание матчасти :(
плохой дискутер из тебя.
Vladimir
плохой дискутер из тебя.
Да с ним сложно поспорить
Anton
К теме о вендорах: насколько я понимаю, если есть папка vendor, в нее компилятор будет смотреть в первую очередь, только потом в gopath на остальные зависимости, я прав?
engelbart
А че тут обсуждать то, вендореное надо комитить, если собираетеаь пересобирать в будущем
Daniel
плохой дискутер из тебя.
тут нет пространства для дискуссии. в go сложились уникальные условия, при которых вендоринг вообще имеет смысл. в с, с++, .net тоже можно было бы собирать и дистрибутить статические бинари, но - не сложилось, и уже не сложится. о чем тут спорить - я не понимаю
engelbart
Если не собираетесь, бекапте бинарник и живите
Anton
Да
а при каких обстоятельствах может получиться так, что порядок ровно противоположный? просто у меня именно так все
Daniel
начиная с 1.6 - не может
Daniel
в 1.5 надо было специальную переменную окружения выставить
Anton
у меня 1.8, так что vendorexperiment должен быть уже по-умолчанию
Anton
все это странно
Daniel
странно, да
Anton
как-то у го с его gopath и vendor все сложно с зависимостями
Anton
путаница часто возникает
Илья
пишешь в Makefile GOPATH=$$PWD:$$PWD/vendor
Илья
и норм :)
andrei
Daniel
не, я в мавене натыкался неоднократно
Daniel
даже приучился собирать uberjar всегда
andrei
джава это отдельная история...
andrei
🤔
Daniel
все истории отдельные, если разбираться
Daniel
пишешь в Makefile GOPATH=$$PWD:$$PWD/vendor
а вот кстати - зачем вам make в go?
Илья
ldflags с версией при сборке, generate, test, всё это на сервере сборки
Daniel
ldflags - а зачем они у вас? я без подколки спрашиваю generate не надо на сервере сборки запускать, точно вам говорю test и build не стоят того, чтобы чуждую =тулзу в проект втаскивать
Anonymous
Стоит.
Anonymous
Иногда завизимостей создается много
Anonymous
И проще одну маленькую команду делать
Anonymous
Нежели в чистую хреначить
Anonymous
Ради сокращения подключить всем известный make - ничего не стоит
Anonymous
Билд проекта, сборка его, билд с учетом проверок по гиту (Важно для микросервисов)
Daniel
что такое сборка отдельно от билда?
Anonymous
Тоже самое.
Anonymous
Русскую версию надо было не забыть написать