我已经开发了自己的 CMS - 我并没有声称它是最好的,甚至不是最好的,我只是想面对创建这样的系统可能带来的问题。
目前,我在为我的 CMS 设计一些合理的版本控制系统时遇到了问题。
我现在所拥有的:
- 项目托管在 GitHub 上(实际上还没有),
- 有两个分支:
- 针对当前变化进行开发
- 主要用于稳定的变化形式发展
我的第一个想法是使用 GitHub API 创建更新系统——用户正在将他的本地最新提交 sha 与项目页面上的 sha 进行比较——如果不是最新的下载文件。这个解决方案有一个很大的缺点 - API 的请求限制,由于每分钟的请求太多,一个用户将能够关闭整个“更新服务器”。
取而代之的是,我将使用“GitHub Pages”来存储项目页面并更新我自己在本地生成的变更集(以 JSON 格式修改的 git diff 输出以及附加信息)。在这个想法中,我不使用提交来检查更新状态,而是使用版本号。
假设我的 GitHub 页面如下所示:
index.html
/changsets
+--0.0.1.json
+--0.0.2.json
...
+--1.0.0.json
changsets 目录中的每个 JSON 文件都将保存自其名称版本以来更改的文件列表 - 如果 1.0.0 是当前版本文件 1.0.0.json 将包含一个空数组。
版本号应该是什么格式?三个整数在 1.0.55 或 1.55.21 时可能看起来不太好。我什么时候应该将更改从开发分支推送到主分支?我不像 Joomla / Drupal 团队那样有经验,所以我没有任何时间表或功能列表来发布版本 X(大多数更新肯定是错误修复)。
如果版本更改太频繁,我将需要生成数十个 JSON 文件,这将浪费时间和资源。也许我应该有六个月的最后期限,那时不会生成任何变更集?
我知道我应该有一些带有 REST API 的网络服务器来处理它,但我希望我的项目完全托管在 GitHub 上。