最近要被強迫從 svn 的版控系統改為由 git 控制版本,因為習慣SVN的數字版號了,很明顯就能看出哪個版本比較新, git 的亂數版號就完全搞不清楚到底哪個版本比較新了,所以決定找出在 git 也能用數字版號的方法,google了一下發現 git 有這個指令
git rev-list HEAD
使用這個指令會列出目前所有的亂數版號,push 過幾次就有幾個,就只要計算有幾行就能轉換成數字版號了
我用來編寫版本的程式長這樣
version.php
<?php
return[
'date' =>'$Date: 2022-08-03 15:12:13 +0800 (週三, 03 八月 2022) $',
'build' =>'$Rev: 101 $'
];
// 2022/08/03 14:49:16.91
以往只要寫程式 更改 最下面那行的時間,commit時,svn 會幫忙更改 $Date跟 $Rev,現在改由bat檔幫忙計算後填入,程式如下
version.bat
@echo off
::計算git push次數FOR /F "tokens=1" %%a in ('git rev-list HEAD ^| find /v /c ""') do set /a veri=%%a+1
set x=version.php
:: 刪除 build 那行
findstr /v "build" %x% > temp
type temp > %x%
:: 刪除有 // 的那行
findstr /v "^//" %x% > temp2
type temp2 > %x%
:: 刪除 ]; 那行
findstr /v "^];" %x% > temp3
type temp3 > %x%
:: 清空多餘變數
del /f temp
del /f temp2
del /f temp3
:: 填回build+Rev
@echo 'build' =^>'^$Rev^: %veri% ^$' >> %x%
:: 填回];
@echo ]; >> %x%
:: 填回時間
@echo // %date% %time% >> %x%