【问题标题】:How to best implement Version Control for Web Development?如何最好地实现 Web 开发的版本控制?
【发布时间】:2009-09-02 15:50:20
【问题描述】:

版本控制系统在开发项目中显然很重要,但在 Web 开发项目中的使用似乎更复杂,因为需要有一个 Web 服务器来运行除了最简单的 Web 应用程序之外的所有应用程序。

考虑到这一点,我环顾四周,发现了几种在 Web 开发项目中使用版本控制的不同方法:

  1. 为每个开发人员提供一个虚拟机,该虚拟机是开发服务器的复制品,并让开发人员在虚拟机中运行应用程序的工作副本。

  2. 让每个开发人员在开发服务器上使用一个子域,例如john.project.com 并将他们的应用工作副本检出到子域指向的目录中。

  3. 使用版本控制系统签出代码、进行更改、提交代码,然后在开发服务器(指向存储库的头部)上进行检查。

我可以看到 1 的缺点是创建虚拟机并确保虚拟机与开发服务器保持不同步所需的额外时间(还需要(?)不断更改开发人员主机文件以指向虚拟机而不是开发服务器)。

如果在站点中使用绝对 URL,我可以看到 2 可能是一个问题,除非有一种简单的方法可以更新配置以使用新的子域。

3 是最容易设置的,但相当原始,对于开发人员来说,在每次更改后继续检查代码可能会变得相当乏味。

* 的用户如何在 Web 开发项目中使用版本控制以及哪种方法/工作流程最有效。

还请包括我没有想到/读过的额外方法。

【问题讨论】:

    标签: version-control


    【解决方案1】:

    尝试 1+3 的组合。

    #1:为每个开发人员提供一个虚拟机,该虚拟机是开发服务器的复制品,并让开发人员在虚拟机中运行他们的应用程序工作副本。

    我不喜欢虚拟机 - 可能只是因为我运行的是与服务器相同的操作系统。更新并保持同步是我可以自己完成的任务(每周一次:“只需安装包 XYZ”)。每个月左右,您可能会冻结一个虚拟机以进行备份(或提供给新开发人员)。

    这是开发人员的最佳方法。他不必等待提交/部署发生。改一行代码,保存文件,在浏览器中按F5,完成。为了获得最佳效率,这是要走的路。

    #3:使用版本控制系统签出代码,进行更改,提交代码,然后在开发服务器上检查(指向存储库的头部)。 p>

    我真的建议设置一个登台/开发服务器。每次有人提交版本控制时,服务器应该自动获取最新版本并重新启动网络服务器。这样其他人可以查看正在运行的产品并提供反馈。

    【讨论】:

    • 是的,除了让开发人员使用虚拟机之外,还考虑了额外的开发/登台服务器。
    【解决方案2】:

    您似乎遗漏了另一个选项,这对于大多数 ASP.NET .NET 开发人员来说很常见。

    4) 从存储库中提取源代码,在本地开发签入。这实际上与 VM 方法相同,只是没有 VM。在 ASP.NET 中,您可以在本地使用 IIS,也可以使用 Visual Studio 开发服务器。

    【讨论】:

    • 我想那是因为我想到的情况是 LAMP + 非 LAMP 开发机器。但是 4) 可能最适合 ASP.NET 开发人员。
    • 我想你可能是,虽然你没有在问题中添加任何 LAMP 标签,所以我给出了完整的答案。对于 ASP.NET,我只见过 1、2 或 4(我的 4)。如果您希望在不破坏主机的情况下使用 Visual Studio 的 Beta 版本,并且有时公司政策要求采用类似于 2 的方法,那么虚拟机非常有用。仍然是一个有趣的问题,所以我要 +1。
    【解决方案3】:

    您所说的不仅仅是版本控制,还有构建服务器。

    这取决于您使用什么语言编写,如果是 java,则使用 SVN/Github 的 CruiseControl,如果是 c#,则使用 SVN/GitHub 的 Team Foundation Server 或 CruiseControl.Net

    大多数版本控制系统都允许您进行分支和合并,然后使用您的构建服务器,您可以将其部署到您喜欢的任何网络服务器。这应该会整理出您单独的开发者子域。

    【讨论】: