3

我正在开发一个网站,并使用我自己的笔记本电脑作为开发服务器,同时使用我的在线服务器作为生产服务器。我正在使用 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 masterdo-we-got-here文件被创建,所以我可以告诉 post-receive 钩子正在工作,但该git pull部分不起作用,当我到达 myrepo 文件夹并使用git pull时,它仍然从 myrepo.git 中提取。

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

4

1 回答 1

4

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

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

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

于 2013-03-15T14:50:18.653 回答