1

在一些开发人员共享的网络服务器上拥有一个网络项目,促使我为该项目设置 Git 存储库。
但是我仍然对如何组织它有一些疑问。

假设我有我的网络项目/var/www/

我希望收到评论的一些问题和想法:

init将 git 存储库放在同一个发布文件夹中,还是在这些项目副本中创建/var/repo/、复制内容和initrepos更好?

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

如果我创建,创建like让开发人员测试他们提交的工作/var/repo/domain.com会很好。Vhostshttp://git.domain.com

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

4

1 回答 1

1

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

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

现在使用 capistrano 将 live 系统与 master 分支连接起来,将测试系统与 dev/staging 分支连接起来。人们当然应该对登台服务器具有 ssh 访问权限。

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

它很容易设置 - 只需为每个人做一些配置事情,你就会有一个很棒的工作流程。

希望它有所帮助。

于 2012-12-05T16:36:34.397 回答