Version control 使用数据驱动的web应用程序和许多开发人员进行版本控制的最佳实践是什么?

Version control 使用数据驱动的web应用程序和许多开发人员进行版本控制的最佳实践是什么?,version-control,Version Control,我已经读了很多类似问题的答案,但仍然没有找到我想要的答案 我们有一个由大约12名开发人员和业务分析师组成的团队在开发一个应用程序。这是一个巨大的应用程序,我猜在ASP和ASP.NET的混合中大约有1000多页 我想知道的是,专业人士是如何管理像这样的大型应用程序的版本控制的?特别是如何管理部署、数据库更改和源代码管理。他们是否以这样的方式构建源代码控制过程,即应用程序可以随时回滚到稳定点?数据库如何与之相适应?是否所有数据库模式更改和过程等都存储在源代码管理中 我认为我的理想解决方案是能够将整个

我已经读了很多类似问题的答案,但仍然没有找到我想要的答案

我们有一个由大约12名开发人员和业务分析师组成的团队在开发一个应用程序。这是一个巨大的应用程序,我猜在ASP和ASP.NET的混合中大约有1000多页

我想知道的是,专业人士是如何管理像这样的大型应用程序的版本控制的?特别是如何管理部署、数据库更改和源代码管理。他们是否以这样的方式构建源代码控制过程,即应用程序可以随时回滚到稳定点?数据库如何与之相适应?是否所有数据库模式更改和过程等都存储在源代码管理中

我认为我的理想解决方案是能够将整个应用程序从零开始重新添加到特定版本,包括数据。那是不是太过分了

更新:我对应用程序大小的第一个猜测是远远不够的。我做了一次实际的计数,得出了一个更大的数字。90%的页面被冻结用于开发或未使用

Perforce对您提出的一些问题有很好的解决方法。从他们关于网页的白皮书中,您可以将这个概念扩展到用于生成/修改表的存储过程和脚本

至于能够从头开始重新水化,这实际上取决于您的灾难恢复计划,以及您如何设置和配置您的开发和集成测试环境;以及您愿意接受多少停机时间。我不会每天都处理这些问题,所以也许有更多真实世界经验的人,特别是在操作方面的人,可以传授他们的智慧

Perforce对您提出的一些问题有很好的解决方法。从他们关于网页的白皮书中,您可以将这个概念扩展到用于生成/修改表的存储过程和脚本

至于能够从头开始重新水化,这实际上取决于您的灾难恢复计划,以及您如何设置和配置您的开发和集成测试环境;以及您愿意接受多少停机时间。我不会每天都处理这些问题,所以也许有更多真实世界经验的人,特别是在操作方面的人,可以传授他们的智慧

120页是“巨大的”?哇

对这样的应用程序进行版本控制非常简单。您有一个生产卷展过程,其中包括在版本控制系统中的每个版本发布之前对其进行标记,并且仅安装标记的版本。您可以在升级时备份数据库,然后再更改模式,并使用描述性名称将其存储在某个位置,该名称允许您链接代码和数据库备份。如果需要回滚,只需安装旧代码并恢复备份

如果您需要回滚,但使用当前数据,那么这是一个更难的问题,更多的是关于数据库的结构以及它的结构是如何演变的,但是Rails迁移是一项有趣的研究,它是如何实现的

除此之外,你的问题相当大,涉及很多领域。最好与以前处理过所有这些事情的人签约,让你走上正确的道路。

120页是“巨大的”?哇

对这样的应用程序进行版本控制非常简单。您有一个生产卷展过程,其中包括在版本控制系统中的每个版本发布之前对其进行标记,并且仅安装标记的版本。您可以在升级时备份数据库,然后再更改模式,并使用描述性名称将其存储在某个位置,该名称允许您链接代码和数据库备份。如果需要回滚,只需安装旧代码并恢复备份

如果您需要回滚,但使用当前数据,那么这是一个更难的问题,更多的是关于数据库的结构以及它的结构是如何演变的,但是Rails迁移是一项有趣的研究,它是如何实现的


除此之外,你的问题相当大,涉及很多领域。最好与以前处理过所有这些事情的人签订合同,让您走上正确的道路。

这确实是一个相当正常、规模适中的应用程序。您只需要遵循良好的源代码管理流程,使用适当的单元测试、持续集成等。许多开发组织已经解决了这个问题

恕我直言,事实上,你认为120页是巨大的,事实上,你觉得这是一个大问题,都告诉我,你应该考虑停止发展,现在,改善你的发展过程。
我担心的是,如果您现在不这样做,您将在以后了解为什么您应该这样做。

这确实是一个非常正常的、中等大小的应用程序。您只需要遵循良好的源代码管理流程,使用适当的单元测试、持续集成等。许多开发组织已经解决了这个问题

恕我直言,事实上,你认为120页是巨大的,事实上,你觉得这是一个大问题,都告诉我,你应该考虑停止发展,现在,改善你的发展过程。
我担心的是,如果你现在不这么做,你以后会知道为什么你应该这么做。

对于这么小的东西,你不必担心能否及时回滚,你真正想要的是能够将最新版本回滚到最后一个版本。这样,如果您破坏了构建,您可以回滚到先前的构建。怎么做

1) 您的web服务器从/www/working读取数据 2) 将更改推送到/www/new 3) 将/www/current移到/www/old 4) 将/www/new移至/www/current

如果/www/current爆炸,只需将/www/old移回原位即可

唯一的障碍是滚动