golangプログラムバージョン番号の追加

4778 ワード

golangプログラムバージョン番号の追加
この間、プロジェクトはよくバージョンを発表し、私たちのバージョン管理が混乱しました.特に、実際の環境では、バージョン管理ソフトウェアがバージョン管理に協力していないため、プログラムが新しいバージョンなのか古いバージョンなのか確認できません.これは私たちに問題の調査に大きな悩みをもたらした.そこで、プログラム自体にバージョン番号をつけて、プログラムを通じてプログラムが新しいバージョンなのか古いバージョンなのかを見ることができます.資料を見るとgolangはC++のようにマクロ定義でバージョン番号を設定できませんが、build時にパラメータldflagsを追加してバージョン番号を追加することができます.以下のようにします.
go build -ldflags "-X 'main.MinVersion=1.0.0.1' " -a -v -o xxx.exe main.go
このように、以上のコンパイル文により、リリースごとにmainが変更する.MinVersion=1.0.0.1は、対応するバージョン番号です.もし、バージョン番号の変更を忘れて発表されたらどうしますか?仕方がありません.バージョン番号が変更されていないので、新しいバージョンと古いバージョンを見分けることができません.では、この問題をどのように最適化しますか?このバージョン番号にタイムスタンプを追加したいです.これにより、バージョン番号の変更を忘れても、タイムスタンプで新しいバージョンと古いバージョンを特定できます.コンパイルパラメータは次のとおりです.
set releasedate=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
go build -ldflags "-X 'main.MinVersion=1.0.0.1' -X 'main.PublishDate=%releasedate%'" -a -v -o xxx.exe main.go
コードにも対応修正が必要なので、コードを貼りましょう.
package main

import (
	"fmt"
)

var MinVersion string
var PublishDate string

func main() {
	fmt.Println("     :%s     :%s", MinVersion, PublishDate))
}
印刷の効果は次のとおりです.
     :1.0.0.1     :20191011103222
へっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっへっそしてオフセットから2ビット文字の抽出を開始し、結果として03(月の値)%date:~8,2%ポインタが左から右へ8ビットずれていることを示し、オフセットから2ビット文字の抽出を開始すると、01(日の値)%date:~5%ポインタが左から右へ5ビットずれていることを示し、その後すべての値%date:~-5%ポインタが逆方向にずれていることを示し、最右端から5ビットずれていることを示し、次に、ポインタから左のすべての数値を抽出します.注意:以上のコンパイルスクリプトは、windowsシステム環境でのコンパイルにのみ適しています.linuxの下で使用する必要がある場合は、対応するcmdコマンドをshellコマンドに変換します.