2013-08-19 98 views
0

我正在使用github来控制我的web应用程序的源代码,但我在将它部署到我的实时服务器时遇到问题。当我在回购中有稳定的代码时,我想ssh进入服务器并且git pull origin master。问题是我有两个文件夹驻留在服务器上的不同位置。使用git镜像web开发环境?

# Bolded to be version controlled 
/var 
**/var/ci** <- php framework 
/var/www/ 
**/var/www/webapp1** 
/var/www/webapp2 

我的问题:有没有一种方法来设置这使得后来我只能git hub pull origin master,它会抢了最新的代码放到这两个目录?

一个解决方案,虽然牺牲了方便和安心,但可以在服务器上设置不同位置的回购站,但有一个bash脚本来替换网络应用程序。这会产生什么问题吗?

#/bin/bash 
#Disclaimer: pseudo code 
`git pull origin master` 
`rm -rf * /my/live/frameworks` 
`cp -f /my/git/repo/frameworks /my/live/frameworks 
`rm -rf * /my/live/web_root` 
`cp -f /my/git/repo/web_root /my/live/web_root 

我可以看到一些问题,通过上述的方法:

  1. 非光滑应用程序升级
  2. 失去缓存的模板和其他临时文件。我可以在rm -rf添加过滤器,但同样这种方式过于哈克对我来说是舒适与

如果你拥有一个Web服务器,并通过将最新的代码出来成立了像我这样做回购的管理它你能提供一些关于如何去做这件事的提示吗?非常感激。

+0

难道你不能让两个目录从同一个git仓库克隆吗?是的,你仍然需要在两个地方做'git pull',但如果这太麻烦了,你可以将它包装在脚本中。我不明白你想用'cp'和'rm'做什么。如果你的部署是git repo的克隆,那么你所需要做的就是'git pull'升级和'git checkout -f SOMETAG'回滚,就是这样。或者我不明白你的问题。 – janos

回答