Gitolite 的某個 Project 要 push 後,自動到前端的機器自動更新,要如何做?
Gitolite push 自動更新如何做
一般要實做 push 自動更新,只需要從 hooks/post-update 著手即可。
- cd git-project/hooks/
- cp post-update.sample post-update
- chmod +x post-update
- vim post-update # 內容如下
#!/bin/sh /usr/bin/ssh user@example.com "cd /var/www/project/;git pull"
- 再來將 user 的 ~user/.ssh/id_rsa 放到 /home/gitolite/.ssh/ 即可。
但是 gitolite 會將 hooks 裡面的檔案權限都自動修改成 640 (不可執行)
所以換個作法:
- cd git-project/hooks/
- cp post-update.sample /usr/share/gitolite/hooks/common/post-update.project
- chmod +x /usr/share/gitolite/hooks/common/post-update.project
- vim /usr/share/gitolite/hooks/common/post-update.project # 內容如下
#!/bin/sh /usr/bin/ssh user@example.com "cd /var/www/project/;git pull"
- 再來將 user 的 ~user/.ssh/id_rsa 放到 /home/gitolite/.ssh/ 即可。
- ln -s /usr/share/gitolite/hooks/common/post-update.project /var/cache/git/project/hooks/post-update
這樣子就可以 push 試試看囉~