如何使用自托管git服务器作为生产服务器?

时间:2013-03-15 14:30:37

标签: git githooks

我正在开发一个网站,并使用我自己的笔记本电脑作为开发服务器,同时使用我的在线服务器作为生产服务器。我正在使用git来管理我的项目。

之前我使用过heroku,我认为只使用git push heroku master发布我的网站真的很酷,所以我打算自己构建一个。

所以,这就是我所做的,我在我的生产服务器上设置了git(用gitosis来管理访问),在我的git repo上,我使用了git remote add git@production:myrepo.git来添加遥控器git repo。

问题是如何获取生产服务器上的代码?生产服务器充当git服务器,因此我只能获得.git文件夹而不是真正的代码。我想到了一个技巧,就是使用git clone --local myrepo.git myrepo克隆生产服务器上的数据,并在myrepo.git的hooks /文件夹中,我编辑了post-receive文件如下:

#!/bin/sh
touch /tmp/do-we-got-here
cd /path/to/clone/myrepo
/usr/bin/git pull

我使用git push production master后,do-we-got-here文件已创建,所以我可以告诉post-receive挂钩工作,但git pull部分不起作用,当我到达myrepo文件夹,并使用git pull,它仍然来自myrepo.git。

所以我想知道如何处理这个?我知道这是可能的,因为像heroku这样的托管网站正在运作!但问题是如何?

1 个答案:

答案 0 :(得分:4)

我有类似的问题,这对我有帮助。

#!/bin/sh
touch /tmp/do-we-got-here
cd /path/to/clone/myrepo
unset GIT_DIR
git pull

运行git hook时,设置了GIT_DIR。这意味着您的pull不会与您更改的目录中的第二个存储库一起运行。