Возникла задача дописать фичу для утилиты написанной на Go 1.7. Одно из требований к утилите было то, что она должна была работать под Windows Server 2008 (без R2). К сожалению, более новые версии Go, в том числе те, в которые завезли модули, использовать было нельзя. В отличие от Rust в Go старых версий с зависимостями всё было сделано плохо.
Нельзя было как в Rust просто указать какую версию зависимости ты хочешь. Поэтому в этой статье опишу как максимально просто решить эту проблему.
Итак, для проекта была нужна библиотека grab.
С последнего мартовского коммита в проект master
этой библиотеки само собой убежал и попутно поломал совместимость.
Проект перестал собираться.
Чтобы подсунуть необходимую версию нужно в %GOPATH%/src/github.com/cavaliercoder
клонировать стабильную версию с нужным тэгом. В данном случае нужен был 2.0.0
.
Удаляем каталог grab
.
Клонируем с тэгом 2.0.0:
git clone --depth 1 --branch v2.0.0 https://github.com/cavaliercoder/grab.git
В Idea может потребоваться переиндексация, чтобы она обновила свои кэши по зависимостям: File > Invalidate caches
.
Готово.