开源CMS的版本控制方式

时间:2012-06-08 18:35:27

标签: php content-management-system github

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

我现在得到了什么:

  1. 项目正在GitHub上托管(实际上还没有),
  2. 有两个分支:
    • 为当前的变化发展
    • 主要用于从发展中进行稳定的更改
  3. 我的第一个想法是使用GitHub API创建更新系统 - 用户正在将他的本地最新提交sha与项目页面上的sha进行比较 - 如果不是最新的下载文件。这个解决方案有一个很大的缺点 - API的请求限制,一个用户可以关闭整个'更新服务器',因为每分钟请求太多。
    而不是这个,我将使用'GitHub Pages'来存储项目页面和更新我自己生成的changsets(以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时,三个整数可能看起来不太好。什么时候我应该将更改从devel推送到master branch?我没有像Joomla / Drupal团队这样的经验,所以我没有任何时间表或功能列表来发布版本X(大多数更新肯定会有错误修正)。
    如果版本经常更改,我将需要生成许多JSON文件,这会浪费时间和资源。也许我应该有一个六个月的截止日期,届时不会产生任何变化? 我知道我应该有一些带有REST API的Web服务器来处理它,但我希望我的项目完全托管在GitHub上。

1 个答案:

答案 0 :(得分:0)

对于版本方案,您可以使用Semantic Versioning

每次查看页面时检查更新都是不现实的,如果高端网站使用您的脚本,实际上可能会构成威胁。相反,您可以向管理面板添加页面或选项,以便管理员检查更新。