我们有一个Web应用程序,其中包含系统操作员可以更改的一堆内容(例如新闻和事件)。有时我们会发布该软件的新版本。该软件正在被标记并存储在subversion中。但是,我对如何最佳版本控制可能独立更改的内容感到有点沮丧。人们使用什么机制来确保以可以重新创建网站或至少受版本控制的方式存储和版本化内容?
答案 0 :(得分:1)
当您确定两组具有自己生命周期的文件(一方是软件文件,另一方面是“新闻和事件”)时,您知道:
您需要分别保存“新闻和事件”文件(在VCS或像Ian Jacobs建议的数据库中,或在CMS - 内容管理系统中),并找到将两者链接在一起的方法( id,时间戳,元标签,......)
不要忘记你不仅在谈论生命周期中的两个不同的文件集,而且还根据它们的性质来讨论不同的文件集:
考虑Is asset management a superset of source control
在此SO问题“S.Lott”中引入的术语所以并非一切都应该以Subversion结束。
答案 1 :(得分:0)
将所有内容保存在数据库中,并为每个事务向DB提供一个时间戳。这样,您可以保留标准数据库备份,并在最糟糕的情况发生时,在您想要的任何日期加载网站内容。
答案 2 :(得分:0)
我想部分答案取决于您正在使用的CMS以及您的网络应用程序的设计方式,但总的来说,我会将新闻项目或事件等数据视为“内容”。换句话说,它不是您的应用程序的一部分 - 它是您的应用程序处理的数据。
当然,您的CMS代码和应用程序代码之间会出现版本问题。您可以通过定义两者之间的接口来管理它。就个人而言,我将数据作为XML发布到Web应用程序,这使您可以使用XML模式准确定义CMS生成所需的内容,以及Web应用程序应该处理的内容。
这应该意味着Web应用程序中的大多数更改都可以在不对数据呈现进行相应更改的情况下进行。当功能更改需要此功能时,您可以创建新版本的架构并继续取得进展。在这种情况下,我将使用Web应用程序代码检查架构,但是YMMV。
这并不容易,如果您在CMS中需要其他数据字段,它会再次变得更加复杂。期望计划一个相当复杂的发布流程(也取决于您的Dev-Test-Acceptance-Production场景的复杂程度。)
如果您不使用CMS,那么您应该考虑它。 (当然,如果操作非常小,它可能仍然属于可以手工操作的类别。)简单地将原始数据放入版本控制系统并不能解决问题 - 您需要能够控制将数据发布到Web应用程序的格式。几乎可以肯定,这种格式应该是供软件使用的,因此通常不适合编写新闻项目或事件的人进行手工编辑。