CnPack Forum » CVSTrac 相关问题 » CVSTracNT 2.0.1 升级手记(一)


2007-2-7 22:22 zjy
CVSTracNT 2.0.1 升级手记(一)

2007.02.06 Zhou JingYu

CVSTracNT 1.2.1 发布到现在已经有整整一年了,期间 cvatrac 官方网站发布过使用 sqlite 3.x 的 2.0 版本,但是很长一段时间看到官方网站本身还用的 1.2.1 的版本,估计是 2.0 还不稳定作者自己也不想随便升级。1.2.0 刚出时我急着升级导致 redsage 服务器运行不稳定,让 robbin 折腾了大半天最终把 cvstrac 给喀嚓掉N长时间一直到 1.2.1 发布才恢复的痛苦经历俺还记忆犹新,既然 2.0 作者自己还没正式用,就再等等吧。

一晃到了 2007 年,某天收到老外一封邮件,问俺们啥时候放出 CVSTracNT 2.0 的版本,到官网上一打听,2.0.1 已经发布了,官网自己也终于升级到了新版本。看来时机已成熟,CVSTracNT 也跟进吧。

官方网站上 2.0.x 的更新记录

The following are in 2.0.1:
1. reports now allow for dynamic sorting on most fields (#599)
2. improvements to search output (#611)

The following are in 2.0.0:
1. Now using SQLite 3 API. See #441 and CvstracUpgrading for more information. Note that older SQLite2-based CVSTrac databases must be manually upgraded.
2. search() function now available in reports (#514)
3. ability to run arbitrary external scripts on various CVSTrac pages/objects (#183 and ExternalToolsCookbook)
4. table wiki markup (#594)
5. online help/user manual (#509)
6. user home pages (#226)
7. better control over formatting of report fields (#581)
8. More WikiSpam countermeasures (#573, #577)
9. {wiki: PAGE TITLE} markup for linking to wiki pages with alternate link text (#565)
10. embedding reports in wiki markup using the {report: rn} markup (#560)
11. option() function can now have values and descriptions ([632])

这次升级最主要的变化是使用了 sqlite 3.x 以及增加了不少功能扩展机制和人性化设计。

首先,按步就班地利用 cvs 的分支合并功能升级 CVSTracNT 的代码:

1. 从 cvstrac 的 cvs 中取出最新的 2.0.1 分支上的代码。
2. 将最新的代码复制到 CVSTracNT 的主干源码目录下。
3. 增加新文件并提交新代码到主干上。
4. 为主干上的新代码打一个标签 V2_0_1_20070205
5. 对 CVSTracNT_ENU 英文移植分支执行 V1_2_1_20060112 到 V2_0_1_20070205 标签的合并操作。
6. 用比较工具仔细比较合并前后以及官方版本的代码,解决文件冲突。
7. 更新 Makefile 文件中的 sqlite 库为 sqlite3。
8. 在 cygwin 下编译新的英文版代码并根据错误提示进行修正。
9. 提交新的英文分支代码。
10. 类似于英文分支的处理,合并及提交 CVSTracNT_CHS 中文分支上的新代码。

升级过程还算顺利,新编译出来的 CVSTracNT 2.0.1 可以跑起来了。

接下来,按照 cvstrac 官网上的说明,对数据库进行升级。因为 sqlite 3.x 和 2.x 数据库格式差异巨大,数据库文件不能直接升级,需要用以下的方法来手工升级:
  mv <project>.db <project>_2.db
  sqlite <project>_2.db .dump | sqlite3 <project>.db

为了便于批量处理多个数据库,我编写了两个批处理:
; CC.bat
rename %1.db %1.db2
sqlite %1.db2 .dump | sqlite3 %1.db

; upgrade.bat
FOR %%C IN (*.db) DO CALL CC.bat %%~nC

执行一次,发现大部分数据库能正确升级,但是 cnpack.db 升级时却出现下面的错误:
Incomplete SQL: INSERT INTO attachment VALUES(1,15,20691,1120029422,'zjy','image
/gif','fullscrbug.gif',NULL,'/

大致分析了一下,估计是附件表中的 blob 内容不能正确处理所致。暂时想不到好的办法,先跳过这一步吧。于是将数据库 dump 为 sql 文件,手工将插入附件记录的内容删除,再用 sqlite3 导入生成新库。测试了一下,果然可以在 2.0.1 下使用了。

接下来,我想先把 cnpack 服务器上的 cvstrac 升升级,感觉最近 cvstrac 经常出问题,隔一段时间就得重启一次服务才能正常工作,希望新版本能解决这个问题。

费了半天功夫,在服务器上把新版本编译好,传上在本地升级过的数据库,启动服务发现页面居然打不开,郁闷:(

太晚了,睡觉,明天继续。。。

2007-2-9 17:03 kendling
辛苦辛苦。。。

2007-3-6 09:52 dalang
不知道新版的cvstrac2.0.1 对cvs2.5以上版本支持如何

Zhou JingYu 辛苦了!

cvstrac旧版本不支持cvs2.5以上版本的中文文件名,不知道新版本支持如何
我想官方不会解决这个问题,毕竟老外不会使用中文文件名的

[[i] 本帖最后由 dalang 于 2007-3-6 09:58 编辑 [/i]]

页: [1]


Powered by Discuz! Archiver 5.0.0  © 2001-2006 Comsenz Inc.