Хорошее автоматизированное решение - https://github.com/marwan-at-work/mod,, которое может автоматически добавлять, удалять или изменять необходимые /vN
в вашем *.go
коде и вашем go.mod
.
Используя ваш пример, он сможет обновить ваш код с помощью github.com/google/go-github/v20
, чтобы вместо него использовать github.com/google/go-github/v24
.
Из хранилища:
Мотивация
Для этого есть два хороших варианта использования:
Если у вас есть библиотека, и вы хотите внести критические изменения, то вам нужно обойти все файлы Go и подпакеты и
обновить пути импорта, чтобы включить v2, v3 и т. д. Этот инструмент просто делает это
автоматически одной командой.
Если вы владеете библиотекой, которая уже помечена как v2 или выше, но несовместима с Semantic Import Versioning, тогда этот инструмент может решить
проблема для вас с одной командой, а также. Введите файл go.mod
с правильным путем импорта, и просто запустите обновление модов один раз или мод
-t = X обновить (где x - это самый главный тег), чтобы обновить пути импорта ваших файлов go, чтобы они соответствовали тегу, в котором вы находитесь.
В дополнение к этим двум вариантам использования, эта утилита также относительно недавно добавила поддержку автоматического обновления клиентов для использования другой основной версии модуля путем изменения /vN
в клиентском коде *.go
и клиентском go.mod
,
Другими словами, эта утилита может использоваться, если вы являетесь автором модуля, переходящего с v2
на v3
, и также может использоваться, если вы являетесь пользователем модуля, переходящего с v2
на v3
.
Он использует пакеты, такие как golang.org/x/tools/go/ast/astutil
, для управления AST источника *.go
с целью обновления путей импорта, и, следовательно, не должен быть подвержен типам опасений, которые вы выражали по поводу использования sed
.