【发布时间】:2013-08-19 22:22:44
【问题描述】:
我正在使用 github 来控制我的 Web 应用程序的源代码,但是在我的实时服务器上部署它时遇到了问题。当我在 repo 中有稳定的代码时,我想 ssh 到服务器和git pull origin master。问题是我有两个文件夹位于服务器上的不同位置。
# Bolded to be version controlled
/var
**/var/ci** <- php framework
/var/www/
**/var/www/webapp1**
/var/www/webapp2
我的问题:有没有办法设置它,以便之后我可以git hub pull origin master 并将最新代码抓取到两个目录中?
一个解决方案,虽然牺牲了轻松和安心,但将在不同位置的服务器上设置一个 repo,但有一个 bash 脚本来替换 web 应用程序。这样会不会有什么问题?
#/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
我可以看到上面的方法有一些问题:
- 应用程序升级不顺畅
- 丢失缓存的模板和其他临时文件。我可以在
rm -rf上添加一个过滤器,但这种方法又太老套了,我无法接受
如果您拥有一台 Web 服务器并像我一样通过从 repo 设置中提取最新代码来管理它,您能否提供一些关于我应该如何执行此操作的提示?非常感谢。
【问题讨论】:
-
你不能从同一个 git repo 克隆两个目录吗?是的,您仍然需要在两个地方执行
git pull,但如果这太麻烦,您可以将其包装在脚本中。我不明白你想用cp和rm做什么。如果您的部署是 git repo 的克隆,那么您需要做的就是git pull升级和git checkout -f SOMETAG回滚,就是这样。或者我不明白你的问题。
标签: git web-applications web-deployment