我正在开发一个网站,并使用我自己的笔记本电脑作为开发服务器,同时使用我的在线服务器作为生产服务器。我正在使用git来管理我的项目。
我以前用过heroku,我认为简单地用git push heroku master发布我的网站真的很酷,所以我计划自己建一个。
所以,下面是我所做的,我已经在我的生产服务器上设置了git (使用gitosis来管理访问),并且在我的git存储库上,我已经使用git remote add git@production:myrepo.git为git存储库添加了遥控器。
问题是如何获取生产服务器上的代码?生产服务器充当git服务器,因此我只能获取.git文件夹,而不能获取真正的代码。我想了一个诀窍,那就是使用git clone --local myrepo.git myrepo克隆生产服务器上的数据,并在myrepo.git的钩子/文件夹中编辑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这样的托管网站正在工作!但问题是如何实现?
发布于 2013-03-15 22:50:19
我也遇到过类似的问题,这对我很有帮助。
#!/bin/sh
touch /tmp/do-we-got-here
cd /path/to/clone/myrepo
unset GIT_DIR
git pull运行git钩子时,会设置GIT_DIR。这意味着您的拉取不会与您更改到的目录中的第二个存储库一起运行。
https://stackoverflow.com/questions/15434972
复制相似问题