开源 CMS 的版本控制样式


Versioning style for open source CMS

我已经开发了自己的CMS - 我不声称它是最好的,甚至不是好的,我只想面对创建这样的系统可能带来的问题。
目前,我在为我的CMS设计一些合理的版本控制系统时遇到了问题。

我现在得到的:

  1. 项目正在GitHub上托管(实际上还没有),
  2. 有两个分支:
    • 针对当前更改的开发
    • 主要用于稳定变化的 devel

我的第一个想法是使用 GitHub API 创建更新系统 - 用户正在将他的本地最新提交 sha 与项目页面上的 sha 进行比较 - 如果不是最新的下载文件。这个解决方案有一个很大的缺点 - API 的请求限制,一个用户将能够关闭整个"更新服务器",因为每分钟请求太多。
取而代之的是,我将使用"GitHub 页面"来存储项目页面并更新我自己在本地生成的 changsets(修改了 JSON 格式的 git diff 输出,其中包含其他信息)。在这个想法中,我不使用提交来检查更新状态,而是使用版本号。
假设我的GitHub页面看起来像这样:

index.html
/changsets
+--0.0.1.json
+--0.0.2.json
...
+--1.0.0.json

changsets dir 中的每个 JSON 文件都将包含自其名称版本以来更改的文件列表 - 如果 1.0.0 是当前版本,则文件 1.0.0.json 将包含一个空数组。
版本号的格式应该是什么?三个整数在 1.0.55 或 1.55.21 时可能看起来不太好。我什么时候应该将更改从 devel 推送到主分支?我没有Joomla/Drupal团队的经验,所以我没有任何时间表或功能列表要做发布版本X(大多数更新肯定是错误修复)。
如果版本更改太频繁,我将需要生成数十个 JSON 文件,这将浪费时间和资源。也许我应该有六个月的截止日期,不会生成任何变化集?
我知道我应该有一些带有 REST API 的网络服务器来处理它,但我希望我的项目完全托管在 GitHub 上。

对于版本方案,您可以使用语义版本控制

每次查看页面时检查更新是不现实的,如果一个备受瞩目的网站正在使用您的脚本,实际上可能会构成威胁。相反,您可以向管理面板添加页面或选项,让管理员检查更新。