| English | Chinese |
FreeMind Hacking¶
FreeMind 是我的最爱,我每天都在用 FreeMind 写文档或者查询我的知识库。
- 我偶尔也用其他开源格式撰写文档,参见:
- 我的 FreeMind 文档都用版本控制系统维护,以前是用 CVS/SVN/Hg, 现在使用的是 Git。
什么是 FreeMind?¶
参见:
为什么要对 FreeMind 进行增强和改动?¶
简单的说,因为 FreeMind 挠到了我的痒处。
- FreeMind 的输出文档中,中文被编码,形如 &#x…; 根本无法直接识别;
虽然一般用户不会直接用写字板查看 FreeMind 文件,但是当使用版本控制后,需要经常在版本间做比较,不能显示为中文,就太不方便了。
- 浪费存储空间,较 UTF-8 编码,文件会大三倍左右。
- FreeMind 将节点信息也保存在文件中,一些和内容无关的信息,如:节点的打开、关闭的状态,修改时间等保存在文件中。
当没有改变任何内容,仅仅展开一个节点,文件就可能被改变。这对使用版本控制系统维护文档来说,是灾难。
感谢 开源! FreeMind 的开源的本质,让扩展称为可能。功能扩展后的 FreeMind 命名为 FreeMind-MMX,因为该增强版本的输出文件除了 *.mm 外,还有一个可以忽略的 *.mmx 辅助文件。
截屏图¶

源代码¶
2011年 FreeMind 的源代码版本控制由 CVS 迁移到 Git,相应的我也改变了 FreeMind-MMX 的维护方式。
- 最早 FreeMind-MMX 代码使用 Mercurial(Hg)+MQ 的方式维护。
- 2010年用 Topgit 维护 FreeMind-MMX 代码,没有放到 Github 上是怕占用宝贵的 Github 托管空间。
- 2011年 FreeMind 上游版本库由CVS迁移至 Git,为什么不用多版本库方式进行管理,即 Android repo 方式,这样就不会占用太多的推管空间。
使用 repo 之后,我在 Github上Freemind 相关版本库占用甚至不到1M!
- FreeMind 官方版本库地址: git://freemind.git.sourceforge.net/gitroot/freemind/freemind
注意不能有 “.git” 后缀,如果添加后缀则无法克隆。
- Github 上 FreeMind-MMX 的 Manifest 库的网址: https://github.com/ossxp-com/freemind-manifest
- Github 上 FreeMind-MMX 的 代码补丁: https://github.com/ossxp-com/freemind-hacks
- FreeMind 官方版本库地址: git://freemind.git.sourceforge.net/gitroot/freemind/freemind
软件下载¶
可以从 SourceForge 下载群英汇增强的 FreeMind 版本。
http://sourceforge.net/project/platformdownload.php?group_id=253752
如果想得到最新版本,参见下面介绍的从源代码进行编译。
从源码编译¶
自己动手编译改进后的 FreeMind(即 FreeMind-MMX),要使用 repo 工具,会自动克隆三个 Git 版本库,再进行编译。
三个版本库分别是:
- FreeMind 官方版本库: git://freemind.git.sourceforge.net/gitroot/freemind/freemind
注意不能有地址不能有 “.git” 后缀,如果添加后缀则无法克隆。
- FreeMind-MMX 的 Manifest 库: https://github.com/ossxp-com/freemind-manifest
- FreeMind-MMX 的代码补丁库: https://github.com/ossxp-com/freemind-hacks
使用 Repo 工具进行 FreeMind-MMX 的编译过程如下:
- 使用我改进的 repo,因为官方的 repo 自动给版本库URL添加 ".git" 后缀,导致克隆官方 FreeMind 的Git代码库失败。
$ mkdir workspace $ cd workspace $ sudo curl -L -k http://github.com/ossxp-com/repo/raw/master/repo \ > /usr/local/bin/repo $ sudo chmod a+x /usr/local/bin/repo
- 使用 Github 上的 FreeMind Manifest 库进行初始化。
$ repo init -u git://github.com/ossxp-com/freemind-manifest.git
- 同步版本库,包括 SourceForge 上的 FreeMind 和 Github 上的 freemind-hacks。
这一步骤时间可能会很长,因为 SourceForge 上 FreeMind 代码库太大(50M)。
$ repo sync
- 完成同步后,在当前目录下有一个 build.sh 脚本,执行它完成改进版本 Freemind 的编译和打包。
$ sh build.sh
- 打包后的文件在 post 目录下。
$ ls post/
FreeMind-MMX 问题报告¶
遇到问题,点击“新建问题”报告。
什么是 Redmine¶
本网站用 Redmine 构建,用于 FreeMind-MMX 的项目管理。
参见:Redmine 帮助