Git repo - 在网络服务器上

时间:2012-05-21 10:28:10

标签: git apache

在一些开发人员共享的Web服务器上创建一个Web项目,驱使我为该项目设置Git repo。
但我仍然对如何组织它有一些疑问。

假设我在/var/www/

中有我的网络项目

我想收到一些问题,想法:

init同一出版物文件夹中的git存储库,创建/var/repo/,复制内容和init repos在这些副本中是否更好?项目

在第一种情况下,我可以将项目分支为superuser并让人们在这个分支上工作......然后决定在测试后合并分支?但在这种情况下我不认为人 可以在网络服务器上轻松测试他们的工作......他们应该需要一个本地的环境。设置进行测试。

如果我创建/var/repo/domain.com,最好像Vhosts那样创建http://git.domain.com,让开发人员测试他们的承诺工作。

如果我有/var/repo/project.com并希望发布已提交的作品(例如将文件复制到/var/www/project.com),我该如何执行此复制操作?使用cp -R?是否已有工具在需要时执行此更新?

1 个答案:

答案 0 :(得分:0)

首先,您真的不应该将您的Web项目作为存储库本身。首先,您应该为每个人设置一个存储库来访问。您可以拥有一个主服务器和一个开发分支,每个人也可以拥有自己的分支,用于Web应用程序的特殊部分。最佳解决方案是将您的存储库放在与实时系统不同的服务器上。 如果您不想在本地测试内容,则应设置开发/临时服务器,以便人们可以在那里进行测试。 最好的方法是使用部署脚本,例如Capistrano的。

你的程序应该是这样的: 服务器A:具有主服务器和临时分支的存储库+如果开发需要其他分支。 服务器B:实时系统(你可以使用capistrano在这里部署主分支 - 如果你想成为唯一一个能够部署到实时系统的人,你不应该向服务器添加任何ssh密钥但是你的或者使用另一个身份验证方法) 服务器C:测试环境(也可能与你的存储库在同一台服务器上,但我个人更喜欢将它分开)

现在使用capistrano将实时系统与主分支和测试系统与dev / staging分支链接起来。当然,人们应该使用ssh访问登台服务器。

他们可以使用dev / staging分支将更改推送到存储库。之后,他们可以使用“cap staging deploy”将dev / staging分支部署到开发服务器以测试他们的工作。 如果一切正常,你可以简单地拉开dev分支并结账。使用'git merge staging'将dev / staging分支合并到主服务器中并将其推送到主存储库。之后,'cap production deploy'将在您的实时系统上安装所有内容。

设置非常简单 - 只需为每个人配置一些配置,您就可以拥有一个出色的工作流程。

希望它有所帮助。