我正在开发一个网站,并使用我自己的笔记本电脑作为开发服务器,同时使用我的在线服务器作为生产服务器。我正在使用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这样的托管网站正在运作!但问题是如何?
答案 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不会与您更改的目录中的第二个存储库一起运行。