История изменений
Исправление den73, (текущая версия) :
Страдает конечно, там же хеша нет.
Там есть ещё вендоринг, т.е. ты копируешь нужные тебе версии в свой репозиторий и дальше не зависишь от сторонних репозиториев. Я только не знаю, сделали ли они, чтобы можно было не патчить исходники, а просто сказать, что «github.com/budden/semdict» - это такая-то директория. Возможно, в статье про это написано - у меня пока руке не дошли.
Как раз есть повод, значит посмотрим:
Как я понял, они вот это сейчас предлагают в качестве решения:
https://golang.org/cmd/go/#hdr-Module_proxy_protocol
Т.е. подмена модуля происходит на уровне сети, ты скачиваешь зависимости не из интернета, а из «своего интернета». Надо сказать, я бы до такого не додумался. Когда я придумывал библиотеки в Яре, я додумался до наличия в проекте файлика, который разрешал бы имя библиотеки в способ её получения, и давал бы ей имя, локальное в пределах проекта. Поддержка этого файлика - отдельный вопрос, например, можно было бы написать инструмент для этого. В голанге есть неоднозначность, например, errors уже неоднозначен, можно заимпортировать разное и поиметь проблем. Т.е. то, что алиасом библиотеки является одно слово - это будет проблема с масштабированием. По сути, в голанге примерно так же и сделали.
Идея в том, что имя библиотеки привязано к интернету, в целом здравая, т.к. интернет гарантирует глобальную уникальность. приятно ли видеть экспорты в виде такой простыни в каждом исходнике - не факт. Зато система проста и однозначна, а ведь Голанг - это Оберон, так что это вполне в духе языка.
Исходная версия den73, :
Страдает конечно, там же хеша нет.
Там есть ещё вендоринг, т.е. ты копируешь нужные тебе версии в свой репозиторий и дальше не зависишь от сторонних репозиториев. Я только не знаю, сделали ли они, чтобы можно было не патчить исходники, а просто сказать, что «github.com/budden/semdict» - это такая-то директория. Возможно, в статье про это написано - у меня пока руке не дошли.
Как я понял, они вот это сейчас предлагают в качестве решения:
https://golang.org/cmd/go/#hdr-Module_proxy_protocol
Т.е. подмена модуля происходит на уровне сети, ты скачиваешь зависимости не из интернета, а из «своего интернета». Надо сказать, я бы до такого не додумался. Когда я придумывал библиотеки в Яре, я додумался до наличия в проекте файлика, который разрешал бы имя библиотеки в способ её получения, и давал бы ей имя, локальное в пределах проекта. Поддержка этого файлика - отдельный вопрос, например, можно было бы написать инструмент для этого. В голанге есть неоднозначность, например, errors уже неоднозначен, можно заимпортировать разное и поиметь проблем. Т.е. то, что алиасом библиотеки является одно слово - это будет проблема с масштабированием. По сути, в голанге примерно так же и сделали.
Идея в том, что имя библиотеки привязано к интернету, в целом здравая, т.к. интернет гарантирует глобальную уникальность. приятно ли видеть экспорты в виде такой простыни в каждом исходнике - не факт. Зато система проста и однозначна, а ведь Голанг - это Оберон, так что это вполне в духе языка.