В настоящее время я работаю над первым выпуском некоторого инструмента, который я написал в Go. У инструмента есть два компонента с индивидуальной версией (один из которых является API-интерфейсом плагина).
Во время разработки мне было трудно разобраться, как работать с этими модулями, и, наконец, настроить два отдельных репозитория. Я создал несколько тегов для API плагина, которые я перенес на удаленный, один из которых был v0.1.0
. Это была глупая идея, поскольку на самом деле это не было v0.1.0
, и я просто хотел иметь какой-то тег для ссылки.
В любом случае, сейчас я пытаюсь составить проект. Поэтому я удалил тег v0.1.0
локально и в удаленном репозитории, создал новый (который ссылается на другой коммит) и перенес его в удаленный репозиторий.
Проблема в том, что я не могу сделать Go забыть старое v0.1.0
. Я попробовал следующие вещи:
go clean -i url/to/api
rm -rf ~/go/pkg/mod/url/to/api@v0.1.0
go clean --modcache
Но независимо от того, что я делаю, всякий раз, когда я выполняю
go get -u url/to/api@v0.1.0
, он загружает старую версию. Я проверяю это, проверяя код в ~/go/pkg/mod/url/to/api@v0.1.0
.
Я пробовал его на другой машине, на которой ранее не устанавливался модуль, и, к моему ужасу, он также загрузил старую версию , хотя в репо нет следов старого тега .
Что здесь происходит? Go имеет какую-то центральную память версий модулей? Как заставить забыть старую версию и загрузить новую?
Редактировать:
Чтобы быть уверенным, я попробовал
git clone -b v0.1.0 https://url/to/api.git
И это проверяет API в правильной версии. Так что go
должен делать ... что-то еще.