本项目所有显著变更都将记录在此文件中。
其格式基于 CHANGELOG 准则 。
utils
包的单元测试。cmd
包下的 prerun
包移动到 src
下,重命名为 lifecycle
包,并使用 sync.Once
确保其只执行一次。lionv1
、 tigerv1
和 catv1
为 lion
、 tiger
和 cat
。third-party
目录)。LICENSE
、CHANGELOG
等)。GitHub Action
流水线时,自动执行补丁生成工具,并把补丁放到Release
中。当用户想更新时,可以使用补丁进行更新。CodeQL流水线
。release_info.md
时的一些问题。Windows
平台上可以使用Windows
时区信息(最终转换为IANA
时区信息呈现)。yaml
配置文件,通过check
子命令可输出为json
。NUL
或/dev/null
。cmd
下的可执行程序包都必须显示导入prerun
包。prerun
包必须显示导入global
包。time/tzdata
时区数据包,除非添加systemtzdata
标签,表示使用操作系统自带的数据包。go gerenate
中添加发布信息(release_info.md
),但因为该文件需要被忽略,因此修改为:release_info.md.ignore
。check
子命令可以反向输出配置文件。ENV_PREFIX
文件,用于决定咋爱获取与项目有关的环境变量时的前缀。format
中遗漏的测试函数。Console API
调用前进行HasConsole
判断,以避免一些潜在的错误。IANA
时区信息。main
程序移到command
程序,将原本的os.Exit
替换成return
一个ExitCode
,最后在main
函数在使用os.Exit
退出程序。有效的解决了以前直接在main
使用os.Exit
导致defer
函数无法释放。go generate
从原本的 Shell
脚本(.sh
和.ps1
)换成由 go run
直接执行的 .go
程序。 同时,数据文件以 .dat
作为文件后缀(除特殊的 VERSION
,NAME
,REPORT
,LICENSE
,ENV_PREFIX
),并且需要忽略的文件以 .ignore
作为后缀。README.md
文档。GitHub Wiki
的引用。GitHub
的PR
模板。GitHub Action
流水线创建Release
时使用markdown
文件:release_info.md
。utils
包下的命名。viper
重构配置文件读取。README.md
文档关于版本号的描述。strconvutils.ReadTimeDuration
中把uint
转换程int
可能带来的风险问题,并新增ReadTimeDurationPositive
函数。README.md
文档关于版本号的描述。Github Dependabot
的支持。.
作为分隔符(原使用-
作为分隔符)。SECURITY.md
、CONTRIBUTORS.md
和CONTRIBUTING.md
。Wiki
引用。README.md
。MIT LICENSE
翻译。refs/tags/v1.0.0
,现在修改为仅包含v1.0.0
)。refs/tags/v1.0.0
,现在修改为仅包含v1.0.0
)。gcflag
参数)。resource
包的测试。Windows Console
的支持。json
格式)。Windows
服务的支持。panic
语句改写为 logger.Panic
日志记录。Git
信息(若有):当前commit hash
、当前最新tag
(若有)、以及tag
(若有)对应的commit hash
(若有)。go:embed
读取的文件:仅保留第一行(某些文件),删除BOM
,删除\r
。exitutils.SuccessExitQuite()
函数)。VERSION
文件获取(第一优先级,可以以v/V
开头,必须满足语义化版本哈规定)。git
获取最新的tag
(第二优先级,可以以v/V
开头,必须满足语义化版本哈规定)。tag
对应的并非当前commit
时,tag
会加上+dev
标签。tag
以0.
开头时,tag
会加上+dev
标签。0.0.0
。commit hash
,则最终版本号为0.0.0+dev-1744225466
,其中1744225466
为编译时间戳。commit hash
,则最终版本号为0.0.0+1744225466-be8f4ff51e6ed2e01171b38459406dc5dac306ea
,其中1744225466
为编译时间戳,be8f4ff51e6ed2e01171b38459406dc5dac306ea
为commit hash
。Server.Example1
例子更完善,输出更多信息。--version
输出更多信息:版本号、编译时间(UTC和Local)、编译的Go版本号、系统、架构。exitutils.SuccessExitQuite()
函数到命令行参数的阻断执行退出中。stderr
。log-name
配置项。tag
对应commit
值的漏洞。Output Config File
逻辑判断错误。SigQuitExit
默认动作的错误。--report
不会阻断服务运行的错误。Usage
对短参数的前缀使用错误(原:--c
,现:-c
)。import resource "github.com/SongZihuan/BackendServerTemplate"
的引用。config
在执行完setDefault()
函数后,进行配置文件反向输出(若存在输出路径)。README.md
文档。string
、bool
、uint
、int
)。json
和yaml
格式,也可以自定义解析器)。posix
系统上可以使用信号量捕获退出信号,并做清理操作。在win32
上,命令行的ctrl+c
也可被捕获,但当程序作为服务在后台运行时,相关停止、重启操作暂未内捕获)。Version
、License
、Name
、Report
等变量)。test_self
文件夹。