转载:http://www.51testing.com/html/26/n-3727526.html
作者:compulsive
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中编辑的主要代码就保存在这几个数据库中,通过查询这些数据库表,可以得到我们要评审的代码表。
如果有任何疑问,欢迎添加qq群测试入门到大神 755431660 共同学习~