Также понимание управления версиями поставщиков в go.

В предыдущем блоге я рассказал об основах модуля Go и управлении зависимостями в GoLang.
В этом блоге я попытаюсь рассказать о добавлении версий в проект (маркировке модуля) и о том, как обновить поставщика до определенной версии.

Что означает версия:

Версия — это идентификатор необратимого снимка модуля, который считается выпуском или предварительным выпуском (бета-версиями).

Он пишется как буква v (подразумевает версию), за которой следует семантическая версия. Семантические версии представляют собой неотрицательные целые числа и имеют формат (основная_версия).(дополнительная_версия).(версия_исправления).

Ниже приведены некоторые случаи для каждой версии:

patch_version ДОЛЖЕН увеличиваться, если представлены только исправления ошибок, совместимые с предыдущими версиями.
minor_version ДОЛЖЕН увеличиваться, если новый, обратно-совместимый добавлен совместимый функционал. При увеличении младшей версии patch_version должен быть сброшен на 0.
major_version ДОЛЖЕН быть увеличен, если внесены какие-либо изменения API, несовместимые с предыдущими версиями. При увеличении основной версии min_version.patch_version должен быть сброшен на 0.

Дополнительные метки для метаданных предварительного выпуска и сборки могут быть добавлены как расширения к формату (основная_версия).(дополнительная_версия).(версия_исправления)
. Например: v.1.0.0+beta, v2.1.12-pre

Самое простое, что можно сделать, это начать первоначальный выпуск разработки с 0.1.0, а затем увеличивать минорную версию для каждого последующего выпуска.

Псевдоверсия:

Версия с идентификатором редакции (например, хэш коммита Git) и отметкой времени из системы контроля версий.

Например, v0.0.0–20191109021931-daa7c04131f5.
Псевдоверсии относятся к ревизиям, для которых недоступны семантические теги версий.
Их можно использовать для проверки коммитов перед созданием тегов версий, например, в ветке разработки. В основном используется для тестирования в целях совместимости.

Существует два способа создания версий в проектах.
1. Создать версию во время создания запросов на вытягивание.

git checkout -b <branch_name>
git commit -m <commit_message>
git push — set-upstream origin <branch_name>
git tag -a <tag_name> -m <tag_message>
git push origin tag <tag_name>

2. Создать версию после объединения изменений с источником

git checkout origin
git tag -a <tag_name> -m <tag_message>
git push origin <tag_name>

Пример:

$ git checkout master
$ git tag -a v1.2.3 -m “stable version 1.2.3”
$ git push origin v1.2.3

В приведенном выше примере «v1.2.3» — это имя тега, а семантическая версия — «1.2.3».

Обновление версии поставщика в GoLang:

Когда вы используете некоторые зависимости в проекте, их необходимо обновлять с учетом последних изменений в соответствии с потребностями.

Ниже приведены шаги для обновления изменений зависимости поставщика в ваших локальных проектах.

export GOPRIVATE=<git_url>
git config — global url.git@<git_url>:.insteadOf https://<git_url>/
//now change the version of vendor package in go.mod file
go mod tidy
go mod vendor

Поставщик модов go опускает файлы go.mod и go.sum для зависимостей от поставщиков, что в противном случае может создать проблемы в команде go для определения правильного корня модуля при вызове в дереве поставщиков.

go mod vendor добавьте версию go из файла go.mod каждой зависимости в vendor/modules.txt.

Вывод

Управление версиями — это способ определения уникальных состояний модулей/программного обеспечения по мере их разработки и выпуска.

Когда вводятся новые функции, исправляются ошибки или устраняются дыры в безопасности, номер версии увеличивается, чтобы указать, что модуль/программное обеспечение включает эти улучшения.