我正在开发一个网站,并使用我自己的笔记本电脑作为开发服务器,同时使用我的在线服务器作为生产服务器。我正在使用 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 这样的托管网站正在运行!但问题是如何?