这是我自 GSoC 开始以来的第一篇博客文章,我想再次写一点关于项目本身的内容,以及我到目前为止完成的一些技术工作。
这个项目的想法是在实时网站上避免进行“危险操作”,以免将其搞乱。危险操作可能从简单的第三方插件安装开始,到从命令行或其他 mysql 客户端程序运行手动查询结束。因此,对于这种情况,我们有一个子网站,它是实时网站的精确副本,但是连接到另一个数据库,并且位于另一个目录中。你在子网站上执行危险操作,然后将所做的更改应用到实时网站上。
项目 SVN 位于 http://jwcp.googlecode.com,如果你想要跟踪开发过程,可以订阅项目动态。你可以在那里找到 beta 版本的下载。它还没有文档说明,但我相信你可以使用它。
文件系统更改部分已经基本完成,因此你可以对子文件进行更改,然后看到它们在差异列表中,撤销它们,创建补丁并应用到主站点上。如果你在子网站上工作的时候,主网站上也有文件更改,你可以使用同步工具更新子网站上那些已更改的文件。现在文件系统的未完成部分是找到与之比较的日期时间,以确定哪些文件已被修改并需要包含在差异列表中。一开始是子网站的创建日期,但之后应该有所前进。由于 unix 系统不保留文件的创建日期,可能我需要在某个地方保留子文件及其创建日期的列表,我猜 SVN 也是这样做的,你会看到很多 .svn 目录,它在这些文件中保存文件信息。
数据库的更改一目了然并不容易,但mysql支持触发器。因此,当我们创建子表时,我们也会在表的插入、更新、删除操作中添加触发器,以便我们知道哪些行被修改、删除或插入,但前提是表应该有主键。现在在Joomla的主要结构中,有些表没有主键,所以它们将不会被包含在修订中。在测试版中,当您在子网站上点击差异按钮时,您将看到数据库差异列表。我们还需要找出哪些表被创建和/或删除。在这些操作上不可能添加触发器,因此我们需要比较子表列表与主表列表,并显示差异,以便开发者选择是否将这些更改包含在补丁中。
除了文档工作外,这个项目需要完成的所有工作,在API准备好之后,我们将能够轻松添加更多酷炫功能。