复合C1 - 在本地开发,同步到实时站点

时间:2013-11-29 08:50:46

标签: webdeploy c1-cms

我有几个Composite C1 CMS网站。

目前要编辑它们,我在实际网站上使用基于网络的CMS。

但是 - 我想在本地更新Visual Studio中的(代码和内容) - 然后同步到Web。但是,如果我的本地副本比在线副本旧(例如,非技术客户端已经在实际站点上编辑了某些内容)和I Web Deploy - 它将覆盖服务器上新文件的顶部。

我需要一个可以解决最新变化的解决方案吗?我在Google或C1文档中找不到任何内容。

如何同步 - 最好使用Web Deploy。我需要某种版本控制吗?

是否有最好的做法 - 通过网络界面编辑实时网站似乎有点冒险&很慢。

2 个答案:

答案 0 :(得分:3)

这种情况的一般答案似乎是使用Package Creator。您可以在本地开发,将已更改的文件添加到包中,并在实际站点上安装该包。这个解决方案完全没有涉及你问题的所有部分,但也有一定的局限性:

  • 您无法有选择地向包中添加内容。这是所有页面或没有页面。
  • 添加数据类型很简单,但稍后更新它们需要您删除数据类型(和数据),并重新创建数据类型。

根据我的经验,如果您将包内容限制为前端内容(如CSS,图像等),那么适用于增量站点更新的包很有用。

你说你需要一个可以解决最新变化的解决方案 - 我相信唯一的解决方案就是你自己,借助一些工具。我不认为这里有一个银弹解决方案。

您应该使用版本控制系统吗?是!无论如何。即使您没有与任何人共享代码,VCS也是从文件系统角度了解Composite C1的好方法,因为您可以在开发时仔细跟踪磁盘上更改的文件。当您想要不断添加已经存在且充满活力的网站的功能时,这些知识至关重要 - 您需要知道要部署什么以及不要触摸什么。

请务必阅读有关Composite如何适应VCS的文档:http://docs.composite.net/Configuration/C1-and-Version-Control

我假设您的网站正在使用XML数据存储(如果您使用的是SQL数据存储,则在同步时不会覆盖您的内容)。

这意味着您的整个Web应用程序位于Web服务器上的磁盘上的一个文件夹中,这在此处是一个优势。 我将尝试概述一个可能对你有用的解决方案,虽然我必须强调我从来没有尝试过这个 - 我在填写时正在编写它。

假设你正在使用git,从生产网络服务器下载整个网站,并将整个该死的东西*提交给你的主分支。

然后,您从该提交创建一个新功能分支,并开始进行稍后要部署的更改,并在您继续时仔细提交您的工作,确保您只提交功能所需的更改,到功能部门。

现在,您已准备好部署,并切换回主分支,然后再次下载整个站点并将其提交给主站。

然后,您将您的功能分支合并到主分支中,并让git完成所有艰苦的工作,即通过实时站点的更改来修改您。必然存在合并冲突,这是您必须加入的地方,并自己决定需要生效的内容。

完成并测试后,您可以将网站部署到生产环境。 在合并时可能会发生对实际站点的更改,因此请考虑在此过程中关闭站点或部分站点。

如果您使用的是SQL数据存储,我建议您购买Red Gate的SQL CompareSQL Data CompareSQL Delta等工具,将您的开发数据库与生产数据库进行比较,然后选择可以与功能部署一起应用于生产数据库的SQL脚本。

'*请考虑使用.gitignore文件以避免提交某些文件 - 仅提供docs信息。

答案 1 :(得分:1)