需求
由于最近做Python的linux服务器脚本,经常要同步代码到测试服务器,又不想直接ssh登录到服务器,所以萌生了用git自动同步代码的想法。
具体的要求是:测试机是服务器,需要本地一push代码,测试机能实时更新。
查阅相关资料发现可以用git的hooks来实现。
解决步骤
说明:
- 本地项目: git-test
- 中转仓库: git-transfer
- 目的项目: git-dest
- 中转仓库与目的项目都在测试机上
初始化中转仓库
1 | mkdir git-transfer |
将中转仓库添加到本地项目的remote
git remote add transfer ssh://r@192.168.157.129/home/r/git-transfer/
给中转仓库添加hooks
1 | cd /home/r/git-transfer/hooks/ |
将 post-update 的内容修改为如下1
2
3
4
5
6
7
8
9
10
11
12
13!/bin/sh
An example hook script to prepare a packed repository for use over
dumb transports.
To enable this hook, rename this file to "post-update".
unset GIT_DIR
DeployPath=/home/r/git-dest
cd $DeployPath
git add . -A && git stash
git pull origin master
将中转仓库clone到目的项目
git clone /home/r/git-transfer/ /home/r/git-dest/
或者1
2
3cd git-dest
git init
git remote add origin /home/r/git-transfer/
这样在本地项目一push,目的项目就会马上更新