Git Tag 作用:一鍵抓取 Git Tag 的 語意化版本號 自動產生 自己的版本控制文件
IPFS
Git Tag 作用:一鍵抓取 Git Tag 的 語意化版本號 自動產生 自己的版本控制文件
補足了版本控制的最後一塊拼圖!
Git Tag 作用
我們在Git 版本控制:透過 GitHub / GitLab 半自動化的進行語意化版本控制那篇有提到如何透過 Git 來進行版本的管控,基本的原理就是透過 Git Tag 來打上 語意化版本的標籤。
因此今天就要透過批次檔來自動抓取最新的版本標籤 (ver tag) 並且根據我們的需求自動地建立頭文件,讓程式碼可以一鍵更新版本且絕對不會出紕漏。令個人或團隊的版本控制系統更上一層樓!
首先我們用 git describe --abbrev=0 --always --tags
來抓取離當前提交的內容最近的 tag,並且用 –abbrev=0
將 tag 後的描述資訊隱藏起來。
接著透過 windows command line 的 delims
命令以字元 .
來區隔開 major, minor and patch。
最後透過 echo and >> %1
來將資料以定義好的格式寫入文件中就完成了!
將上述幾個步驟整理並寫成 CMD 指令,成果如下。只要在 Windows 中受到 Git 管控並且有提交過 sem-ver 格式的 tag 的資料夾路徑下建一個文件並在該文件內貼上如下內容,並將檔名改成 “xxxxxx.bat”。
在該路徑打開終端機執行 xxxxxx.bat "version.h"
就會自動執行指令並在 “version.h” 檔案內寫入上述資訊囉。
@echo off
if "%1"=="" (
echo Usage: %0 ^<header_file_name^>
goto :eof
)
for /F "usebackq" %%v in (`"git describe --abbrev=0 --always --tags"`) DO (
echo #ifndef __VERSION_H__ > %1
echo #define __VERSION_H__ >> %1
echo.>> %1
for /f "tokens=1,2,3 delims=." %%i in ("%%v") DO (
echo #define VERSION_MAJOR ^(%%i^) >> %1
echo #define VERSION_MINOR ^(%%j^) >> %1
echo #define VERSION_PATCH ^(%%k^) >> %1
)
for /F "usebackq" %%d in (`"git show -s --format=format:%%cd --date=short"`) DO (
for /f "tokens=1,2,3 delims=-" %%i in ("%%d") DO (
echo #define BUILD_DATE_YEAR ^(%%i - 2000^) >> %1
echo #define BUILD_DATE_MONTH ^(1%%j - 100^) >> %1
echo #define BUILD_DATE_DAY ^(1%%k - 100^) >> %1
)
)
echo.>> %1
echo #endif /* __VERSION_H__ */ >> %1
echo.>> %1
echo /*** (C^) COPYRIGHT LEOLI ***/ >> %1
)
原文連結Leo Studio
喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!