这种情况的一般答案似乎是使用Package Creator。有了它,您可以在本地进行开发,将您更改的文件添加到包中,然后将该包安装在实时站点上。但是,此解决方案根本无法涵盖您问题的所有部分,并且有一定的局限性:
您不能有选择地向包中添加内容。是所有页面还是没有页面。
- 添加数据类型很容易,但稍后更新它们需要您删除数据类型(和数据),然后重新创建数据类型。
根据我的经验,如果您将包内容限制为前端内容,例如 css、图像等,那么包非常适合增量站点更新。
您说您需要一个解决最新变化的解决方案 - 我相信唯一的解决方案是您自己,借助一些工具。我认为这里没有灵丹妙药。
您应该使用版本控制系统吗?是的!无论如何。即使您没有与任何人共享您的代码,VCS 也是从文件系统角度了解 Composite C1 的好方法,因为您可以在开发过程中仔细跟踪磁盘上更改的文件。当您想为已经活跃且活跃的网站持续添加功能时,这些知识至关重要 - 您需要知道要部署什么,不应该接触什么。
请务必阅读有关 Composite 如何适合 VCS 的文档:http://docs.composite.net/Configuration/C1-and-Version-Control
我假设您的网站正在使用 XML 数据存储(如果您使用 SQL 数据存储,您的内容在同步时不会被覆盖)。
这意味着您的整个 Web 应用程序位于 Web 服务器磁盘上的一个文件夹中,这在这里可能是一个优势。
我将尝试概述一个可能对您有用的解决方案,尽管我必须强调 我从未尝试过这个 - 我在输入时正在编造它。
假设您正在使用git,从生产网络服务器下载整个站点,并将整个该死的东西*提交到您的主分支。
然后您从该提交创建一个新功能分支,并开始进行您想要稍后部署的更改,并在您进行的过程中仔细提交您的工作,确保您只提交您的功能工作所需的更改, 到特征分支。
现在,您已准备好部署,您切换回 master 分支,再次下载整个站点并将其提交给 master。
然后您将您的功能分支合并到主分支中,并让 git 完成所有艰苦的工作,将您的更改与来自实时站点的更改拼接起来。肯定会有合并冲突,这就是您必须介入的地方,并自己决定哪些内容需要上线。
完成并测试后,您可以将网站部署到生产环境。
在您进行合并时,实时站点可能已发生更改,因此请考虑在此过程中关闭该站点或其中的部分站点。
如果您使用的是 SQL 数据存储,我建议您购买像 Red Gate 的 SQL Compare 和 SQL Data Compare 或 SQL Delta 这样的工具,将您的开发数据库与生产数据库进行比较,并手动选择可以应用的 SQL 脚本与您的功能部署一起到生产数据库。
'* 请考虑使用 .gitignore 文件来避免提交某些文件 - 请参阅 docs 获取信息。