Вот шаги bash, чтобы настроить новый минимальный проект модуля Go с git-репо, зафиксировать его и пометить его аннотированным тегом семантической версии:
mkdir gotest
cd gotest
git init
go mod init test.org/simple
cat <<EOT >> app.go
package main
import (
"fmt"
"runtime/debug"
)
func main() {
fmt.Println("hello world")
if bi, ok := debug.ReadBuildInfo(); ok {
fmt.Printf("version=%v. sum=%v\n", bi.Main.Version, bi.Main.Sum)
} else {
fmt.Println("Failed to get build info")
}
}
EOT
echo "simple" >> .gitignore
git add go.mod app.go .gitignore
git commit -am "initial commit"
git tag -am "initial semantic version" v0.1.0
Быстро убедитесь, что он помечен правильно:
git tag -n
git describe --dirty
Сборка и запуск:
go build
./simple
Что производит:
hello world
version=(devel). sum=
Я надеялся увидеть семантическую версию, которой я пометил хранилище. Вместо этого я получил пустышку. Что не так?