學習工作 工作

Checkout latest git commit automatically

如果要自動化拿到最後 commit 的 branch (大概只有再 staging/testing server 上有這樣的需求),可以用 git command 加上 shell (sed, grep) crontab 來完成。當然,如果是 gitlab 的話還有 gitlab-runner 可以幫忙,但好像用 shell script 比較直覺一點(?)

#!/bin/bash
#filename = /var/www/my.sh
#expect="remotes/origin"
#sub="git checkout "

branches=$(git branch -a --sort=-committerdate | grep 'remotes/origin' | grep -v 'HEAD' | grep -v 'master' | head -n 1 | sed -e 's/^ *//' -e 's/ *$//' -e 's/remotes\/origin\//git\ checkout\ /')
#echo "$branches"
eval "cd /var/www/mywww; $branches"
#接下來可以做想做的其他事情

git branch 命令中加上 –sort 參數可以指定要依照甚麼藍未來排序,而 committerdate 便是時間日期,而加上一個減號(-)是代表 decending。

然後建立一個無密碼的 ssh key 加到可以 pull repo 的帳號去,然後建立 crontab 就完畢了。

5-55/10 * * * * cd /var/www/mywww; ssh-agent bash -c 'ssh-add /home/user/.ssh/nopwd; git pull --all'; sh /var/www/my.sh

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料