自動化機制中,要確保可以拿到最新的 Git Repository 最保險的方法是 rm -rf
掉再重新 clone 一份,但對於稍微大一點的 repository 速度就太慢了,所以得想辦法保留 repository 加快速度。
目標是想要處理 submodule 的變更,並且仍然可以處理 force push 時的災難,避免需要人工介入... 這在建各種自動化機制時常常會用到,像是用 Fortify SCA 白箱掃描,或是 CI & CD 機制上。
BRANCH=master git fetch --force git reset --hard origin/"${BRANCH}" git submodule sync --recursive git submodule update --init --force git clean --force --force -d -x git checkout "${BRANCH}" --force
用了很多 --force
主要是要處理 force push 後的收拾 :o
其實如果想要處理的更好的話,可以在發生錯誤時改走 mv (保留屍體) + 重新 clone 的機制,並且發警報出來讓管理者事後研究,這樣發生問題當下還是可以先提供服務。
不過這個想法還只在腦袋裡還沒寫... XD
話說學長要不要把 git.tw 從 wikipedia 改導到 facebook 社團:
https://www.facebook.com/groups/git.tw/
或是像 http://rust.tw/ 那樣指到 github pages 給大家自己自由修改。