Checkout latest git commit automatically

Phanix
·
·
IPFS
·

如果要自動化拿到最後 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

Original link: Phanix's Blog

CC BY-NC-ND 2.0 授权

喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!