2010年8月 归档
Redmine与Mylyn的整合
8月9日
众所周知,Eclipse是一款免费开源而且功能强大的IDE,尤其是其灵活的插件扩展机制更使它锦上添花。
对于开发人员来说,要处理的任务太多,那么有没有一个工具可以让开发人员自由规划自己的任务呢?
Mylyn的诞生给开发人员带来了福音,从此开发人员的工作变得井然有序。
Mylyn 是一个Eclipse任务管理(task management)插件。它提出了任务仓库和任务列表的概念。任务仓库可以是本地的,也可以是互联网上基于Web的任务管理或者缺陷管理系统。任务列表则是从任务仓库中取出的符合查询条件的一组任务。同时它还提供了本地个人日程安排的功能。可以将任务列表的任务根据具体情况设置日程。
那么Redmine作为一款灵活易用的项目管理与缺陷跟踪工具,能否和Mylyn整合呢?
答案是肯定的。具体的整合步骤我已经写成文档,放在Redmine的用户手册中。需要该功能的用户可以移步到 Redmine与Mylyn的整合过程
pySvnManager 0.5 升级指引
8月9日
对于不能提供 SSH 远程登录服务器的用户,可以参照本文进行 pySvnManager 的升级。关于 pySvnManager 的新功能,参照:《pySvnManager新功能:LDAP用户同步》
升级的步骤简单的说就是:备份 -> 软件升级 -> 重启服务
阅读全部内容 »
Xapian的检索
8月8日
Xapian中有关查询的代码比索引复杂的多,因为它支持多种查询机制,而索引就只是循环叠加。如下面的多种查询机制:
- 概率性搜索排名
- 相关度反馈
- 词组和邻近搜索
- 全方位的布尔型搜索器
- 支持提取搜索关键字的词干
- 支持通配符查询
- 支持别名查询
- Xapian支持拼写纠正

pySvnManager 新功能:LDAP用户同步
8月8日
pySvnManager 升级到 0.5 版本,引入了数据库支持,数据库主要用于保存和 LDAP 用户帐号同步的用户帐号信息。
数据库采用 sqlite 数据库(如果需要也可以使用其它类型数据库),无须手动创建数据库,在 pySvnManager 运行时,会根据需要自动创建数据库。
在没有使用 LDAP 用户信息之前,pySvnManager 是读取 SVN 授权文件,从该授权文件中获取用户名单并显示。
可以看出这种实现的问题是:
- 在权限检查的用户列表中,只能看到用户登录ID,而看不到用户 ID 对应的用户名
- 显示的用户帐号很少(只有在 SVN 授权文件中引用的用户帐号才能显示)
- 为新用户授权,如果用户不在授权文件中,需要手工输入用户名,容易出错。
pySvnManager 0.5 增加了内置数据库和LDAP用户同步功能之后,再看 pySvnManager 中显示的用户列表:
你会发现新版本的用户列表(已经完成和LDAP同步):
- 除了显示用户ID外,还显示用户名
- 显示的用户多了很多,除了在 SVN 授权文件中引用到的用户外,LDAP 中授权的 SVN 用户也显示出来了
- 在为新用户授权时,不必手工输入用户,只需要进行一次 LDAP 用户同步,用户帐号信息自动显示出来。
那么如何进行LADP 同步呢?
我们把 LDAP 用户同步的按钮放在“角色管理”界面,只要点击其中的“和LDAP用户同步”图标按钮,自动完成同步。
其它改进还包括:更好的 IE6 支持,UI 的重新设计等等。我们会陆续协助客户完成软件升级。
用户手册也已经更新,参见: 《pySvnManager 用户手册》
关于如何升级到新版本的 pySvnManager,参照《pySvnManager 0.5 升级指引》
解决 gistore 备份数据中的 git 库(submodule)的备份
8月3日
昨天在从客户现场回公司的路上,想明白了 Gistore 备份出现的 AM 标识的备份数据就是含有变更的子模组。
之前 Gistore 不能解决的一个备份问题是,当备份的数据中包含 git 库,备份数据将不会保存在 gistore 版本库中,而是以 submodule 方式加入备份库。实际的效果是,数据没有备份下来。例如:
- 安装了 etckeeper,用于维护 /etc 下配置文件的变更。实际上 /etc 目录本身已经是一个 git 库了
如果在 gistore 任务建立前,/etc 目录已经 git 化,则不能有效的对 /etc 进行备份 - 某个备份数据的目录,被人为的 git 化。这可能是在 hacking 时遗留的 git 库
我在改动服务器的某些数据(如界面模板等),经常将目录 git 化,然后再修改/比较/提交
如果不能有效的对 git化的备份目录进行备份,肯定会收到惩罚。
在最早的实现中,只是在备份之后的后处理(post_check)查找以 git 子模组方式添加的目录,并打出相应的警告信息。如何能够自动进行处理,一直排在工作队列中,昨天晚上开始了修改。
检查子模组
首先要找出哪些目录是以子模组方式添加的。最开始想到了从状态中找出 AM 标识的子模组,进行修改,但是存在问题:1. 添加没有变更的git化的目录,不会显示为 AM(添加且含修改),而显示为 A(添加)。2. 不能有效的发现 gistore 版本库中已经提交数据中以 git 子模组方式添加的目录。
于是采用分析 git submodules status 命令的输出,确定子模组。不过这个命令需要多次迭代执行(遇到无 .submodules匹配报错退出),才能找到所有的子模组。
重新以普通目录和文件方式添加子模组
首先删除已经提交的按照子模组方式保存的目录,重新添加不能直接添加子模组目录,否则仍会按照子模组方式添加。采用的方法是:
- 删除已经按照子模组方式添加的目录
git –git-dir=repo.git rm –cached sub/module … - 在子模组目录下创建一个临时文件,并添加该临时文件
git –git-dir=repo.git –work-tree=run-time add sub/module/<TMPFILE> - 对子模组目录执行添加操作
git –git-dir=repo.git –work-tree=run-time add sub/module - 别忘了删除临时文件
git –git-dir=repo.git –work-tree=run-time rm sub/module/<TMPFILE> - 迭代执行,直到没有子模组发现为止
Gistore 版本升级为 0.2.3,在服务器上重新安装和执行,将原来子模组方式添加的目录重新纳入备份中,放心了。
Gistore 应用:备份博客数据
- 我们在公司服务器上创建了一个名为 wordpress 的任务,备份 wordpress 数据库导出文件,wordpress 配置文件,wordpress 插件目录,wordpress 上传图片及附件。
- 将 wordpress 任务的 git 库,加入 git 服务器中,并设置权限
- 每个有权限的公司员工,都可以使用 git 命令克隆/同步公司服务器上的 wordpress 版本库,将博客数据保存下来




最新评论