2022年8月3日 星期三

從svn跳槽到git繼續使用數字版號

 最近要被強迫從 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%