Redmine 中几个重要的 MySQL table

    Redmine 系统大部分的数据都是保存在数据库中的,为了了解Redmine系统的整体结构,有必要搞清楚这些数据是怎么保存的,表的结构是什么样的,里面有哪些内容。今天就研究一下这方面的内容,主要以code review相关的内容为主。

    首先介绍几个常用MySQL操作命令:

ALTER: 修改已存在的数据表(例如增加/删除列)和索引。 
CREATE: 建立新的数据库或数据表。 
DELETE: 删除表的记录。 
DROP: 删除数据表或数据库。 
INDEX: 建立或删除索引。 
INSERT: 增加表的记录。 
SELECT: 显示/搜索表的记录。 
UPDATE: 修改表中已存在的记录。

    这些命令使用起来比较简单,具体用法可以查看相关的资料。

    使用查询命令可以发现使用code review之后redmine一共使用了51个表。其中比较重要的如下几个:

    1、projects

mysql> select id, name description, created_on, updated_on, identifier from projects;
+----+----------------+---------------------+---------------------+------------+
| id | description    | created_on          | updated_on          | identifier |
+----+----------------+---------------------+---------------------+------------+
|  1 | taobao project | 2011-08-25 14:44:47 | 2011-08-25 14:44:47 | taobao     |
+----+----------------+---------------------+---------------------+------------+

    记录创建的工程,内容不多,主要的有项目名称,创建时间,标识符等。

    2、changesets

mysql> select id, repository_id, revision, committer, committed_on, comments, commit_date from changesets limit 4;
+----+---------------+----------+-----------+---------------------+----------------------+-------------+
| id | repository_id | revision | committer | committed_on        | comments             | commit_date |
+----+---------------+----------+-----------+---------------------+----------------------+-------------+
|  1 |             1 | 1        | svncenter | 2011-08-10 14:30:10 | add folder by System | 2011-08-10  |
|  2 |             1 | 2        | svncenter | 2011-08-10 14:30:10 | add folder by System | 2011-08-10  |
|  3 |             1 | 3        | svncenter | 2011-08-10 14:30:11 | add folder by System | 2011-08-10  |
|  4 |             1 | 4        | svncenter | 2011-08-10 14:30:11 | add folder by System | 2011-08-10  |
+----+---------------+----------+-----------+---------------------+----------------------+-------------+

  

    保存代码每一次修改的记录,其中repository_id代表属于那个工程的代码库,revision是版本号,每次修改都回增加一个版本号,committer是修改人,committed_on代表修改时间,comments是修改内容的注释,commit_date是创建日期。

    3、changes

mysql> select * from changes limit 4;
+----+--------------+--------+-----------------+-----------+---------------+----------+--------+
| id | changeset_id | action | path            | from_path | from_revision | revision | branch |
+----+--------------+--------+-----------------+-----------+---------------+----------+--------+
|  1 |            1 | A      | /trunk          | NULL      | NULL          | NULL     | NULL   |
|  2 |            2 | A      | /trunk/tmstable | NULL      | NULL          | NULL     | NULL   |
|  3 |            3 | A      | /branches       | NULL      | NULL          | NULL     | NULL   |
|  4 |            4 | A      | /tags           | NULL      | NULL          | NULL     | NULL   |
+----+--------------+--------+-----------------+-----------+---------------+----------+--------+

    详细记录changesets中的每一个变化,changeset_id对应之前changesets中的变化版本,每一个版本可能会对应多个changes,action是变化的操作,有三种,A代表新增文件或文件夹,D代表删除文件或文件夹,M代表修改文件或文件夹,path代表文件的路劲,from_path代表来源文件的路径,只在M是有效,from_revision和revision代表修改前后的版本,一般为NULL。

    4、repositories

mysql> select id, project_id, url, type, path_encoding from repositories;
+----+------------+------------------------------------------+------------+---------------+
| id | project_id | url                                      | type       | path_encoding |
+----+------------+------------------------------------------+------------+---------------+
|  1 |          1 | http://svn.app.taobao.net/repos/tmstable | Subversion | NULL          |
+----+------------+------------------------------------------+------------+---------------+

    版本库保存编辑的SVN版本路径。

    Redmine中编辑的主要代码就保存在这几个数据库中,通过查询这些数据库表,可以得到我们要评审的代码表。

posted @ 2011-08-25 22:47  compulsive  阅读(1065)  评论(0编辑  收藏  举报