【问题标题】:Composite C1 - develop locally, sync to live siteComposite C1 - 本地开发,同步到现场
【发布时间】:2013-11-29 08:50:46
【问题描述】:

我有几个 Composite C1 CMS 网站。

要编辑它们,我目前在实时站点上使用基于 Web 的 CMS。

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

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

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

是否有最佳实践 - 通过网络界面编辑实时网站似乎有点冒险并且速度很慢。

【问题讨论】:

    标签: webdeploy c1-cms


    【解决方案1】:

    这种情况的一般答案似乎是使用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 CompareSQL Data CompareSQL Delta 这样的工具,将您的开发数据库与生产数据库进行比较,并手动选择可以应用的 SQL 脚本与您的功能部署一起到生产数据库。

    '* 请考虑使用 .gitignore 文件来避免提交某些文件 - 请参阅 docs 获取信息。

    【讨论】:

    • 谢谢!为了澄清并使这更加复杂,站点中有自定义 MVC 代码 - 由开发人员 (A) 编辑。我是开发人员 (B) - 我编辑所有内容。还有一个客户 (C) 不是技术人员,但会编辑内容和一些标记。
    • 关于将页面导出到包的小说明 :) 最新版本的 Package Creator (>= 3.5.6) 现在允许您导出“页面树”,即任何页面及其所有子页面.右键单击页面并选择“将此页面树添加到包创建者”。
    • 在我的场景中,我开始认为通过 Web 界面(定期自动备份)编辑实时站点可能是最简单的方法?然而,使用 SQL 是一个有趣的内容角度。
    • 使用 Git 并让网站和您的本地网站都成为您的 git 存储库的客户端可能会很有趣。一些 gitignore,然后在对文件进行更改时让网站自动拉取和签入。然后我们只需要一个通知系统和一个不错的基于 Web 的合并工具。
    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多