如何从Trac迁移到Redmine
本教程介绍如何从trac迁移到redmine。 原来写的是从trac 0.10.3(旧蚀刻服务器)升级到Redmine 1.0.1(挤压),但是成功测试了trac 0.11和0.12,以及Redmine 1.0.5和1.1.2(1.2也在工作此版本也经过测试,以产生上游补丁,但不集中)。
不要忘记禁用trac以防止用户在迁移期间使用它。
1.备份Trac数据
ssh oldtracserver
cd /var/lib/
tar -czf trac.tar.gz trac
scp /var/lib/trac.tar.gz newredmineserver:/tmp/
2.在新服务器上安装Redmine
即使运行独立的服务器也很简单,需要一些技巧:
aptitude install redmine
cd /usr/share/redmine/
mkdir tmp
chown -R www-data:www-data tmp/
mkdir log
touch log/production.log
chown -R www-data:www-data log/
# Running the standalone server
sudo -u www-data X_DEBIAN_SITEID="default" ruby script/server webrick -e production -b newredmineserverip
现在,现在可以访问http:// newredmineserver:3000
,由默认的redmine页面打hello。
3.安装开发环境
人们可能认为这是可选的,但这是非常重要的一步。 你可能会用一个新的不熟悉的工具做很多错误,所以你会很高兴你曾经在dev上尝试过。 生产数据库将保持所有的尝试和错误的清理,这可能会阻止您重做冗长的迁移。
vi /etc/redmine/default/database.yml
development: adapter: sqlite3 database: /var/lib/dbconfig-common/sqlite3/redmine/instances/default/redmine_default-dev encoding: utf8
cd /usr/share/redmine
rake db:migrate RAILS_ENV="development"
rake redmine:load_default_data RAILS_ENV="development"
touch log/development.log
chown -R www-data:www-data log/
chown www-data:www-data /var/lib/dbconfig-common/sqlite3/redmine/instances/default/redmine_default-dev
sudo -u www-data X_DEBIAN_SITEID="default" ruby script/server webrick -e development -b newredmineserverip -p 3001
4.清理Redmine测试环境
如果在迁移过程中仍然设法弄乱了数据库,那么如何恢复干净的redmine环境:
rm /var/lib/dbconfig-common/sqlite3/redmine/instances/default/redmine_default*
rm /var/lib/redmine/default/files/*
cd /usr/share/redmine
rake db:migrate RAILS_ENV="production"
rake db:migrate RAILS_ENV="development"
rake redmine:load_default_data RAILS_ENV="development"
rake redmine:load_default_data RAILS_ENV="production"
chown www-data:www-data /var/lib/dbconfig-common/sqlite3/redmine/instances/default/redmine_default*
将Trac DB迁移到Redmine's
用于迁移的脚本已经大量定制,以从trac导入更多的数据,而不是使用redmine附带的默认脚本。 我的工作是基于Redmine论坛的Trac Importer补丁协调工作。 更具体地说在这里可以找到的最高级的脚本版本。
我的修改添加以下增强功能:
- 处理更多票证属性更改:
- 所有权变更(重新分配)
- 组件变更(类别)
- 改变优先级
- 总结变化(一行描述)
- 更改问题类型(bug,功能...)
- 完成率的变化
- 填充完成率。 这是通过将其映射到trac的分辨率的映射哈希来完成的。 默认 :
RATIO_MAPPING = {'' => 0,
'fixed' => 100,
'invalid' => 0,
'wontfix' => 0,
'duplicate' => 100,
'worksforme' => 0} - 通过相应地添加观察者处理CCs字段
- 添加开始日期(第一个注释日期)和截止日期(当done_ratio为100%时)填充日历和快捷图表
- 添加时间段条目以处理从timeandestimation插件的迁移(花费的时间,总时数),redmine中已经存在估计的小时数。 Timelog评论链接到票证中的正确记录。
- 添加一个新的任务跟踪器与正确的工作流程,并将其映射到trac的任务。
- 默认启用所有的redmine模块(是的,它是纯粹的惰性:o))
它还修复了当前脚本中的一些错误:
- 将票的作者加入项目记者名单
- 在机票上正确更新时间
- 很多小问题
还有一些可能被删除的丑陋的黑客:
- 添加一个丑陋的黑客将“可结算”自定义字段类型设置为复选框。 一个正确的修复将需要解析trac.ini这将是一个更大的实现。
我发送它上游,希望他们将它放在未来版本的redmine。 否则,您可以从我们的公共SVN下载: trac-redmine / migrate_from_trac.rake 。 Redmine的trunk修订版5857的相应补丁是: trac-redmine / migrate_from_trac.rake_r5857.patch 。
一旦你有了新的脚本,运行:
rake redmine:migrate_from_trac RAILS_ENV="production"
WARNING: a new project will be added to Redmine during this process.
Are you sure you want to continue ? [y/N] y
Trac directory []: /tmp/trac/mytracproject
Trac database adapter (sqlite, sqlite3, mysql, postgresql) [sqlite3]:
Trac database encoding [UTF-8]:
Target project identifier []: myredmineproject
# Repeat for all projects
rake redmine:migrate_from_trac RAILS_ENV="development"
# Repeat for dev environment
如上所述,我的脚本将在每个时间日志中添加一个链接,指出问题中的正确说明。 不幸的是,timelog条目没有被编织,因此显示为原始文本。 如果要更改此行为,则必须将此问题的修补程序应用于Redmine:
cd /usr/share/redmine
wget "http://www.redmine.org/attachments/download/2807/textilize-timelog-entry-comment_r3084.patch"
patch -p0 < textilize-timelog-entry-comment_r3084.patch
6. SVN迁移
如果您也将SVN迁移到新服务器,这里是一个小程序。 没有什么令人兴奋的你会发现在网络上相同,这仅供参考:
6.1。 在旧主机上备份SVN
ssh oldsvnserver
cd /var/lib/svn/repository
for project in *; do svnadmin dump ${project} | gzip > ${project}.gz ; done
scp *.gz newsvnserver:/tmp/
6.2。 在新主机上导入
svnadmin create project1
zcat project1.gz | svnadmin load project1
7.将Redmine链接到SVN
如果您在提交信息中使用了“查看#”和“修复#”,那么不要忘了添加以下内容:
在redmine中,转到管理 - >设置 - >存储库(即http:// newredmineserver:3000 / settings?tab = repository
)以包括see / fix:
7.1。 添加pre-revprop-change Hooks允许修订修改
cd /var/lib/svn/
vi pre-revprop-change
#!/bin/sh exit 0
ln -s /var/lib/svn/pre-revprop-change project1/hooks/
ln -s /var/lib/svn/pre-revprop-change project2/hooks/
...
ln -s /var/lib/svn/pre-revprop-change projectn/hooks/
7.2。 修改SVN提交日志
rake redmine:migrate_from_trac_svn RAILS_ENV="production"
WARNING: all commit messages with references to trac pages will be modified
Are you sure you want to continue ? [y/N] y
Subversion repository url []: file:///var/lib/svn/project1
Subversion repository username []:
Subversion repository password []:
Redmine project identifier []: myredmineproject
# Repeat for all projects
rm */hooks/pre-revprop-change
7.3。 在Redmine中设置所有存储库
在redmine中,转到:您的项目 - >设置 - >存储库(即http:// newredmineserver:3000 / project1 / settings / repository
):
7.4。 从SVN同步Redmine DB
您必须先返回到管理 - >设置 - >存储库(即http:// newredmineserver:3000 / settings?tab = repository )中,以生成密钥:
然后一次导入所有项目的存储库:
wget "http://newredmineserver:3000/sys/fetch_changesets?key=8qKxftrhICYt8bPEShVa"
8.升级到Redmine 1.0.5
Redmine的压缩版本容易受到这种安全建议(在写入21/04/2011时),它在1.0.5中得到纠正。
aptitude -t squeeze-backports install redmine redmine-sqlite
而已! 您的trac项目现在应该完全迁移到redmine。 我们遇到的唯一剩下的问题是从Trac中的虚假数据,或需要手动修改的wiki页面格式不正确的HTML。 尽管有这些例外,脚本将为您做所有的工作。