ADSense script

Code Colors

2019年12月28日 星期六

Define version with git tag and breach

有時候看到程式有問題,卻不知道他出自哪個版本
也許可以參考下列:
程式 build 之前, 讓IDE 自動執行 ctrl.sh 檔案(不能自動就手動囉) 將所需要的版本號 compiler 進去程式裡面
由於該項目沒有正式導入使用,使用者請斟酌

最大原因 version.h 檔案無法與真正的commit的一致!!!
因為 commit 後 commit次數變了 檔案指紋也變了 所以執行 ctrl.sh 後 又會生成一個新的 version 檔案...
無限循環 雞生蛋 蛋生雞的問題 我投降!!...
有需要的 可以參考下面 程序自行更改:


ctrl.sh 檔案, 在windows系統下  可能需要安裝其他軟體,
我是安裝過 codeblock 所以可以用.
檔案 ctrl.sh, version.h.template 要放在一起,執行 ctrl.sh 後,
會在src 目錄下生成version.h檔案,引入它使用即可

ctrl.sh檔案:
#!/bin/bash
rm -f src/version.h
BRANCH=`git branch | awk '{if ($1=="*") print $2}'`
DESCRIBE=`git describe --tags --dirty='(m)' --always`
git rev-list HEAD | sort > config.git-hash
LOCALVER=`wc -l config.git-hash | awk '{print $1}'`
if [ $LOCALVER \> 1 ] ; then
    VER=`git rev-list origin/master | sort | join config.git-hash - | wc -l | awk '{print $1}'`
    if [ $VER != $LOCALVER ] ; then
        VER="$VER+$(($LOCALVER-$VER))"
    fi
    if git status | grep -q "modified:" ; then
        VER="${VER}M"
    fi
    VER="$VER $(git rev-list HEAD -n 1 | cut -c 1-7)"
    GIT_VERSION="\"r$VER::$BRANCH($DESCRIBE)\""
else
    GIT_VERSION=
    VER="x"
fi
rm -f config.git-hash

cat version.h.template | sed "s/\$FULL_VERSION/$GIT_VERSION/g" > src/version.h

echo "Generated version.h"

echo git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %cn %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative
echo git describe --tags --dirty='(m)' --always
echo git describe --tags --dirty='(m)' --match t*
echo git describe --tags --dirty='(m)' --match t* --long

git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %cn %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative

檔案 version.h.template
#ifndef VERSION_H
#define VERSION_H
 
#define VERSION_NUMBER $FULL_VERSION
 
#endif // VERSION_H

成果:
#ifndef VERSION_H
#define VERSION_H
 
#define VERSION_NUMBER "r8+4 ae20413::New(V1.0.1-4-gae20413(m))"
 
#endif // VERSION_H

沒有留言:

張貼留言

手機選擇帳號後,按下發布 要再點選一次發布哦

牙醫助理櫃檯療程預約預留時間

 預約預留時間要根據醫生的習慣,有的醫生療程比較快有的比較慢,每個醫生習慣不一樣,可以另外記住每個醫生的習慣,畢竟如果醫生15分鐘完成,約30分鐘,可能中間會有很長時間差,以下是常見的時間可以參考看看。 OD補牙 ~30min  ENDO根管治療     ~30-50min En...