如何从Trac迁移到Redmine

如何从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。 尽管有这些例外,脚本将为您做所有的工作。

链接

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏