GitHub 又多了一项新功能:可以在浏览器中直接编辑库中的文件并提交。在提交之前,还可以预览本次提交所做的修改。
GitHub 用户登陆后,可以发现一个新按钮。对于项目成员,按钮上写的是“Edit”,点击按钮就可以直接编辑文件并提交;非项目成员则会看到“Fork And Edit this file”,点击后会先创建分支,然后在分支上编辑文件。
这项编辑功能使用了 ACE 编辑器,居有语法高亮、自动折行等功能。ACE 编辑器还被用于 Cloud9 IDE 等项目中,它取代了Mozilla 推出的基于Canvas 技术的Bespin/Skywriter 项目。
ACE 诞生于 2010 年末,它使用了与 Bespin/Skywriter 不同的渲染方式:不再使用 Canvas 元素,也不像 CodeMirror 1 那样在 DOM 元素上使用contentEditable
属性。
ACE 将文本作为 HTML 字符串显示在 DOM 元素中,每次内容发生改变、移动滚动条、或移动光标时都会重新绘制。看起来,这种方式很低效,但实际上这一类的 DOM 更新在现代浏览器上非常迅速。
CodeMirror 1 的升级版 CodeMirror 2 也使用了这种方式。作者 Marijn Haverbeke详细的解释了为什么要放弃contentEditable 属性。此外,contentEditable 还有另一个问题。移动浏览器通常不会在可编辑元素获得焦点时显示屏幕键盘,虽然 Eclipse Orion 项目尝试用其他方式实现,但问题仍然没有得到解决。
GitHub 并不是第一个实现此功能的代码托管服务商,今年早些时候,Google Code 就已经实现了类似的功能。
目前,编辑器功能纷纷在Git 客户端上出现,比如GitHub 的 GitHub For Mac 和基于JGit 的EGit 。Git 客户端与IDE 之间的界限正在变得模糊,前面提到的Cloud9 等基于浏览器的IDE 也在和Git 紧密集成,你可以直接在IDE 中打开GitHub 上的代码库进行编辑。 Eclipse 的 Orion 也增加了对 Git 的支持,它基于 JGit/EGit(通过 Orion 的服务器组件实现),并包含在 Orion 0.3 中。
评论