【问题标题】:Git workflow for a CMSCMS 的 Git 工作流程
【发布时间】:2016-05-13 15:12:58
【问题描述】:

我们有一个 CMS 系统,目前使用这个工作流程:

  • 我们有一个用于整个 CMS 的 github 存储库
  • 每个分支代表网站,主分支是我们开发新功能的地方 - 这有几个优点(我们可以比较网站,版本升级只是合并,CMS 版本是可维护的)
  • 我们也将站点特定的文件夹存储在 git 上,因为这些文件夹也需要版本控制

我的第一个问题是,您对此工作流程有何看法?这是完全错误的方式吗?

但是我们在这个工作流程中存在一些问题。

  • 当我们使用 git merge(主 -> 站点)升级新版本时,站点特定的文件夹也会被合并,而不仅仅是核心 CMS 文件。我可以在合并之后(和提交之前)恢复/重置它,但这不是我最喜欢的解决方案,有点复杂。
  • 有时我们为站点开发新功能,完成后,我们将其合并到主站点,以用于以后的新版本。在这种情况下,在版本升级合并后,我们可以在 git 历史记录中看到所有特定于站点的提交。我知道 git 就是这样工作的,这只是一个小问题,但有点烦人。

在阅读了 SO 之后,我有一些解决它的计划:

  • 核心 CMS 文件和站点特定文件夹的单独存储库
  • Git 子模块解决方案 - 我还不清楚,但也许这是一个更好的解决方案
  • 使用 .gitattributes 文件和站点特定文件夹的“merge=ours”配置 - 但如果我知道正确,这仅适用于合并在给定目录中存在冲突的情况。
  • 其他?

那么您对这个案例有什么建议? 我希望你的情况很清楚。 感谢您的帮助:)

亚当

【问题讨论】:

    标签: git version-control merge content-management-system workflow


    【解决方案1】:

    Separate repository for the core CMS files, and the site specific folders.

    这是你应该做的,因为你的 git 历史将从分离中受益。

    我会为每一个创建一个不同的 repo,并让它使用你的框架

    您现在的工作流程:

    W2 <- M -> W1
          |
          D
    

    D - 开发, M - 大师, W - 网页

    建议的工作流程:

    W2  M  W1
    |   |   |
    D1  D2  D3
    

    每个Website 都会将Master 作为工具而不是git repo。

    【讨论】:

    • 感谢您的回答。建议的解决方案(站点的不同存储库)是我认为的“正常”解决方案,但是我无法使用 git 轻松比较站点版本、文件和其他内容。我正在等待其他提示,但这是一个很好的解决方案
    • stackoverflow.com/questions/4380019/git-merging-and-submodules 也许这会有所帮助。使它们成为主 CMS 的子模块。
    猜你喜欢
    • 1970-01-01
    • 2017-06-09
    • 1970-01-01
    • 2010-10-25
    • 2012-02-07
    • 2015-05-16
    • 2021-10-11
    • 2012-01-14
    • 2014-11-02
    相关资源
    最近更新 更多