LINUX.ORG.RU

можно поругать мою поделку - регистрация, аутентификация, сессии

 , , ,


0

2
★★★★★

Последнее исправление: den73 (всего исправлений: 1)
Ответ на: комментарий от den73

Страдает конечно, там же хеша нет. Откуда он будет знать, что там за релиз. Если поставишь хеш код может внезапно перестать собираться. А еще репозитории иногда удаляют. Тупиковый импорт совершенно.

crutch_master ★★★★★
()
Ответ на: комментарий от crutch_master

Страдает конечно, там же хеша нет.

Там есть ещё вендоринг, т.е. ты копируешь нужные тебе версии в свой репозиторий и дальше не зависишь от сторонних репозиториев. Я только не знаю, сделали ли они, чтобы можно было не патчить исходники, а просто сказать, что «github.com/budden/semdict» - это такая-то директория. Возможно, в статье про это написано - у меня пока руке не дошли.

Как раз есть повод, значит посмотрим:

Как я понял, они вот это сейчас предлагают в качестве решения:

https://golang.org/cmd/go/#hdr-Module_proxy_protocol

Т.е. подмена модуля происходит на уровне сети, ты скачиваешь зависимости не из интернета, а из «своего интернета». Надо сказать, я бы до такого не додумался. Когда я придумывал библиотеки в Яре, я додумался до наличия в проекте файлика, который разрешал бы имя библиотеки в способ её получения, и давал бы ей имя, локальное в пределах проекта. Поддержка этого файлика - отдельный вопрос, например, можно было бы написать инструмент для этого. В голанге есть неоднозначность, например, errors уже неоднозначен, можно заимпортировать разное и поиметь проблем. Т.е. то, что алиасом библиотеки является одно слово - это будет проблема с масштабированием. По сути, в голанге примерно так же и сделали.

Идея в том, что имя библиотеки привязано к интернету, в целом здравая, т.к. интернет гарантирует глобальную уникальность. приятно ли видеть экспорты в виде такой простыни в каждом исходнике - не факт. Зато система проста и однозначна, а ведь Голанг - это Оберон, так что это вполне в духе языка.

den73 ★★★★★
() автор топика
Последнее исправление: den73 (всего исправлений: 1)
Ответ на: комментарий от crutch_master

Кстати не, конечно же, они недодумали, т.к. они потом стали вводить url-ы с версиями. Т.к. в принципе возможно применение двух разных версий одной и той же библиотеки в одном проекте. Например, взять какой-нибудь конвертер файлов - там понадобятся разные версии читалки для разных версий формата.

den73 ★★★★★
() автор топика
Ответ на: комментарий от den73

Т.е. подмена модуля происходит на уровне сети, ты скачиваешь зависимости не из интернета, а из «своего интернета»

Но зачем так извращаться? Можно просто скопировать код себе в src/lib/ и делать импорт оттуда.

Идея в том, что имя библиотеки привязано к интернету, в целом здравая

Чем? Гитхаб через n лет закроют и ты будешь бегать править ссыкли по всему проекту?
Ты просто пишешь make и проект просто собирается и всё. Ничего больше не нужно.

crutch_master ★★★★★
()
Последнее исправление: crutch_master (всего исправлений: 2)
Ответ на: комментарий от den73

Вопрос что ты будешь делать, когда автор нужной тебе либы психанёт и решит грохнуть свой проект оставлю открытым.

crutch_master ★★★★★
()
Ответ на: комментарий от crutch_master

Можно просто скопировать код себе в src/lib/ и делать импорт оттуда.

Это один из их старых вариантов, вендоринг. Ты копируешь всё в vendor и оттуда берёшь. Но он требует патчить импорты прямо в исходных файлах, что, как ты понимаешь, «очень удобно».

Ничто не мешает иметь прокси, который возьмёт файлы из этой же локальной директории vendor, при этом патчить исходники не придётся. Это решит вопрос и с гроханьем либы.

И я рад, что я запрыгиваю в этот поезд именно тогда, когда эта проблема уже решена, или хотя бы близка к решению. Потому что раньше они делали хрень и пытались всех убедить, что это нормально, а теперь наконец-то дошли до того, чтобы сделать годноту.

den73 ★★★★★
() автор топика
Последнее исправление: den73 (всего исправлений: 2)
Ответ на: комментарий от den73

Но он требует патчить импорты прямо в исходных файлах, что, как ты понимаешь, «очень удобно»

В ../lib либы. В каждой либе .git/ В чём проблема?

Ничто не мешает иметь прокси

Ты предлагаешь пляски с прокси, но ради чего? Ты можешь сделать просто import "lib/mylib" и всё. Либы сложить в ../lib, в твоём проекте сделать на них ссылку, внутри каждой либы - её git, который ты можешь апдейтить и патчить как хочешь.

crutch_master ★★★★★
()
Ответ на: комментарий от den73

И я рад, что я запрыгиваю в этот поезд именно тогда, когда эта проблема уже решена

Не было никогда никакой проблемы.

crutch_master ★★★★★
()
Ответ на: комментарий от crutch_master

Нее, ну его нахер с такими импортами. Серьёзно.

Не было никогда никакой проблемы.

???

den73 ★★★★★
() автор топика
Последнее исправление: den73 (всего исправлений: 1)
Ответ на: комментарий от den73

Кстати, что происходит, если либа на которую ты сделал импорт ссылается на другую либу с гитхаба? npm помойка?

crutch_master ★★★★★
()
Ответ на: комментарий от den73

Никогда не было необходимости делать импорты прямо с гитхаба.

crutch_master ★★★★★
()
Ответ на: комментарий от crutch_master

Ты предлагаешь пляски с прокси, но ради чего?

Мой проект ссылается на pkg/errors и характеризует его как github.com/pkg/errors. Мой проект использует gin. gin использует github.com/pkg/errors. Дальше что?

Да и это не я предлагаю, а авторы го. Пользователи го не обсуждают авторов го. Они кланяются, читают мантру, перебирают чётки и исполняют. Ну или собираются всем приходом, идут к начальнику авторов го, после чего авторы го получают люлей и переписывают Конфуция.

den73 ★★★★★
() автор топика
Ответ на: комментарий от crutch_master

А в го нельзя никак делать импорт, кроме как через гитхаб?

Через адрес репозитория в интернете. Есть команда go get ./... которая автоматически загружает все зависимости, если ты хипстор. Соответственно, при прокси ставишь одну переменную окружения, и работаешь через прокси. Исходники не меняются, версии под контролем. Всё пучком.

Хотя можешь указать просто локальный путь. Как он отличает интернет от локального пути - я не знаю. Видимо, он берёт из интернета только то, что не найдено локально. Я пока хипстор.

den73 ★★★★★
() автор топика
Последнее исправление: den73 (всего исправлений: 2)
Ответ на: комментарий от crutch_master

Да в том и дело, что уже можно. Я ж хипстор не от души, а потому, что сейчас делаю упражнения. Да и вообще на раннем этапе разработки не страшно качать с гитхаба. А так я проверил (частично с твоей помощью), что годное решение этой проблемы уже сделано.

den73 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.