Version control 如何使用托管内容管理应用程序

Version control 如何使用托管内容管理应用程序,version-control,web-applications,content-management-system,Version Control,Web Applications,Content Management System,我们有一个web应用程序,其中包含一组系统操作员可以更改的内容(例如新闻和事件)。我们偶尔会发布软件的新版本。软件正在被标记并存储在subversion中。然而,对于如何最好地控制可能独立更改的内容,我有点纠结。人们使用哪些机制来确保内容的存储和版本控制方式可以使站点重新创建,或者至少可以控制版本?将所有内容都保存在数据库中,并为数据库的每个事务提供一个时间戳。这样,如果发生最坏的情况,您可以保留标准的DB备份,并在任何日期加载站点内容。当您确定两组文件具有各自的生命周期时(一边是软件文件,另一

我们有一个web应用程序,其中包含一组系统操作员可以更改的内容(例如新闻和事件)。我们偶尔会发布软件的新版本。软件正在被标记并存储在subversion中。然而,对于如何最好地控制可能独立更改的内容,我有点纠结。人们使用哪些机制来确保内容的存储和版本控制方式可以使站点重新创建,或者至少可以控制版本?

将所有内容都保存在数据库中,并为数据库的每个事务提供一个时间戳。这样,如果发生最坏的情况,您可以保留标准的DB备份,并在任何日期加载站点内容。

当您确定两组文件具有各自的生命周期时(一边是软件文件,另一边是“新闻和事件”,您知道:

  • 不能同时将它们版本连接在一起
  • 你不应该贴相同的标签
您需要单独保存“新闻和事件”文件(在VCS或Ian Jacobs建议的DB中,或在CMS-内容管理系统中),并找到将两个文件链接在一起的方法(id、时间戳、元标签……)

不要忘记,您不仅在讨论生命周期中的两组不同的文件,而且还讨论了其性质不同的一组文件:

考虑一下在本SO问题“”中引入的术语

  • 软件文件:基础架构信息,即“表示企业信息资产的处理”。您的代码是该资产的一部分,由VCS(版本控制系统)管理,作为配置管理规程的一部分
  • “新闻和事件”:企业信息,即数据(非处理);这通常在内容管理器和关系数据库之间划分

因此,不是所有的东西都应该以Subversion结尾。

我想部分答案取决于您使用的CMS以及web应用程序的设计方式,但一般来说,我会将新闻项目或事件等数据视为“内容”。换句话说,它不是应用程序的一部分,而是应用程序处理的数据

当然,您的CMS代码和应用程序代码之间会存在版本控制问题。您可以通过定义两者之间的接口来管理这一问题。就我个人而言,我会将数据以XML形式发布到web应用程序,这使您可以使用XML模式精确定义CMS需要生成的内容以及web应用程序应该生成的内容我希望处理

这应该意味着web应用程序中的大多数更改都可以在不相应更改数据呈现的情况下进行。当功能更改需要此更改时,您可以创建架构的新版本并继续取得进展。在这种情况下,我将使用web应用程序代码签入架构,但YMMV

这并不容易,如果您在CMS中需要额外的数据字段,它又会变得更复杂。请计划一个相当复杂的发布过程(也取决于您的开发测试验收生产场景有多复杂)

如果你不使用CMS,那么你应该考虑它。(当然,如果操作很小,它可能仍然属于手工操作的范畴。简单地将原始数据放入版本控制系统并不能解决问题——你需要能够控制将数据发布到web应用程序的格式。几乎可以肯定,这种格式应该是供软件使用的,因此通常不适合编写新闻的人手工编辑或事件