Как импортировать две версии одного и того же модуля go? - PullRequest
2 голосов
/ 04 августа 2020

У меня такая проблема:

  • Модуль A импортирует модуль X v0.1.0
  • Модуль B импортирует модуль X v0.2.0
  • Я импортирую как A, так и B в моем проекте.

Golang выбирает X v0.2.0 и называет это хорошим. Но это нехорошо. v0.1 и v0.2 достаточно различаются, поэтому A ломается, и мой проект не компилируется.

Какие варианты у меня есть, чтобы это исправить?

Официальный Позиция go выглядит так: «разработчики X сделали это неправильно и должны были выпустить основную версию после критических изменений». Но в текущей ситуации это не помогает.

Я не могу найти обсуждения практических решений.

Дополнительная информация

  • Вышеупомянутое упрощение, A и B имеют еще пару зависимостей, которые также зависят от X.
  • Этот проект должен быть обслуживаемым группой людей. Таким образом, обновление A и B до новых версий в идеале не вызывает затруднений. 1033 *
    • Разветвление A и X, изменение всех путей импорта и обновление go.mod A. Это работает, но делает обновления этих модулей медленными и подверженными ошибкам.
    • Скопируйте и вставьте требуемый код из A и X, чтобы избежать его импорта. Также медленно и подвержен ошибкам.
    • Глубоко погрузился в творческие приложения go mod vendor, но не смог найти решения.
...