我的问题是,如何以一种好的方式对生产环境进行版本控制?
这是我们当前的环境:
- (内部服务器)开发 - 版本控制源代码
- (客户服务器)验收测试环境
- (客户服务器)暂存环境
- (客户服务器)生产环境
当我们发布验收测试的新功能时,我们会在 Visual Studio 中发布,压缩更改并将它们应用到测试服务器上。在那里,我们创建了一个备份文件夹(以便我们可以恢复更改)并创建一个发布文件夹,以便我们可以在这些更改被批准后将它们移动到 Staging。
这是创建备份文件夹、发布文件夹、重新创建目录结构并尝试跟踪哪些功能进入哪个版本的大量体力劳动。这很乏味,并且某些开发人员不遵循发布程序总是存在问题。
理论上我可以为测试环境创建一个存储库。(忘记源代码,这是关于已发布的应用程序)在每个版本中,开发人员都会提交并提供有关他正在发布的功能的评论。
当功能应该从 Test 移动到 Staging 时,我们会导出从上次更新 Staging 环境时所做的更改,并将它们复制到 Staging 应用程序中。在那里我们做了一个提交,稍后可以提取它以发布到生产环境。
这样做的缺点是使用 subversion 会使应用程序与那些 .svn 目录混淆。这可以通过禁止访问 IIS 或 web.config 中的那些目录来解决。另一种解决方案是在应用程序根目录上方的目录中使用 Git。但是对于 Windows 环境中没有经验的开发人员来说,Git 更难使用。
有没有人有这个问题的经验?您如何对生产环境进行版本控制?如果您需要恢复发布,您是否有在发布之前创建的备份文件夹?
我已经与我们的开发人员讨论过这个问题,他们认为使用 subversion 进行版本控制和备份测试/登台/生产环境有任何问题。恰恰相反,他们会乐于在每次需要发布新功能时不创建发布/备份文件夹。
同时,这也有一些不安全感。以前没有人听说过这个,将应用程序放在版本控制系统中,我们不确定会有什么缺点。
如果你有这样的场景经验,我会很高兴听到它。
迈克尔·伦丁