Я получаю свои руки грязными с Go, и хотя я понимаю и ценю принцип простоты, о том, что Go был построен, я хотел бы понять причину, по которой вы покидаете - в способе управления версиями пакета в свой инструмент выборки зависимостей go get
и оператор import
.Управление версиями пакетов в Go 1.5
Если я правильно понял, go get
и import
достать пакет от HEAD
, и они не могут обратиться к ветке или тегу. Хотя есть такие инструменты, как gopkg.in, которые обходят это ограничение, официальный набор инструментов:
- разработчикам сил, чтобы создать отдельные операции РЕПО для основных (ломки) версий своих продуктов.
- Это не позволяет потребителям понижать рейтинги от второстепенных или микро-версий в случае обнаружения ошибок в новых.
По правде говоря, все не так просто, потому что для управления версиями пакетов потребуется стратегия борьбы с противоречивыми транзитивными зависимостями, например. X
зависит от A
и B
, каждый из которых зависит от разных версий C
.
Исходя из фона Java, действительно кажется, что это ограничение создает определенные риски и проблемы, среди прочего:
продукта эволюции/упаковки и поломку публичного API, 3-й партии DEPS является неизбежной, поэтому версионности должен быть первоклассным гражданином в инструментальной линейке ИМХО.
The Гит-репо-в-версии политики является крайне неэффективным:
- Общая история Git пакета теряются или рассеянным по сделкам РЕПО (сливается между версиями, Backports и т.д.)
- Конфликты с переходными зависимостями все еще могут возникать и будут отображаться незамеченными, потому что язык и инструментальная цепочка накладывают какую-либо семантику, чтобы разрешить обнаружение в первую очередь.
Enterprise Усыновление может быть затруднено и команда развития может уклоняться от языка, при условии, что:
- Всегда перетаскивание в
HEAD
означает, что они не могут контролировать или заморозить их 3-й партию DEPS, ведущее к потенциально непредсказуемому конечному продукту. - Не хватает рабочей силы, чтобы постоянно обновлять и тестировать свой продукт с помощью верхнего уровня
HEAD
(не каждая компания в мире - это Google :)).
- Всегда перетаскивание в
В то время как я понимаю, что именно этот риск может быть - и должен быть - смягчены с непрерывной интеграции, она не решает основной корень проблемы.
Какую информацию мне не хватает? Как вы относитесь к изменениям пакетов вверх по течению при развертывании Go на предприятии с ограниченными кадрами?
вы можете использовать импортные товары. Путем разработки 'go get', чтобы вытащить из HEAD, он позволяет легче извлекать исправления и заставляет разработчиков API лучше помнить о несовместимых изменениях. Тем не менее, это, безусловно, вопрос, основанный на мнениях, который не по теме для StackOverflow. –
Я вижу. Я изменил формулировку, чтобы избежать основанных на мнениях ответов. Если бы вы могли подробно остановиться на импорте поставщиков - или на другие тактики для развертывания Go на предприятии без необходимости иметь дело с постоянными изменениями в верхнем течении, я был бы признателен. – raulk