Redmine与SVN的关联 - 配置和使用介绍

项目管理系统Redmine支持与不同的软件配置管理(Software Configuration Management,SCM)工具集成,可以在Redmine中查看SCM的内容,也可以使得在SCM中提交代码时自动更改Redmine中的问题状态,以及使Redmine中的问题与SCM中的修订版本形成关联,建立代码与问题的追溯关系。

本文说明Redmine与Subversion(SVN)的关联方法,详细如下:

什么?你还没用过Redmine?好办!你可以从这里获取一套Redmine虚拟机试用一下。

1.确认configuration.yml中有SVN正确命令

Redmine使用config/configuration.yml作为配置文件,如果不存在,需要先创建:

bash 复制代码
cp config/configuration.yml.example config/configuration.yml

这个配置文件中可以配置电子邮件、版本库SCM命令、附件存储位置、等等。

使用下面命令编辑配置文件:

bash 复制代码
nano config/configuration.yml

确保配置文件中的scm_subversion_command配置为"svn"或留空,以便使用正确的或默认的svn命令。下面是默认的配置:

bash 复制代码
  # Configuration of SCM executable command.
  #
  # Absolute path (e.g. /usr/local/bin/hg) or command name (e.g. hg.exe, bzr.exe)
  # On Windows + CRuby, *.cmd, *.bat (e.g. hg.cmd, bzr.bat) does not work.
  #
  # On Windows + JRuby 1.6.2, path which contains spaces does not work.
  # For example, "C:\Program Files\TortoiseHg\hg.exe".
  # If you want to this feature, you need to install to the path which does not contains spaces.
  # For example, "C:\TortoiseHg\hg.exe".
  #
  # Examples:
  # scm_subversion_command: svn                                       # (default: svn)
  # scm_mercurial_command:  C:\Program Files\TortoiseHg\hg.exe        # (default: hg)
  # scm_git_command:        /usr/local/bin/git                        # (default: git)
  # scm_cvs_command:        cvs                                       # (default: cvs)
  # scm_bazaar_command:     bzr.exe                                   # (default: bzr)
  #
  scm_subversion_command:
  scm_mercurial_command:
  scm_git_command:
  scm_cvs_command:
  scm_bazaar_command:

并且确保这个svn命令在Redmine服务器中可以使用,比如用下面命令确认是否能看到版本号:

bash 复制代码
svn --version

注意:修改configuration.yml后需要重启Redmine。

2.确认Redmine已启用SVN

登录网页端Redmine,打开"管理->配置->版本库",确保"启用SCM"中的"Subversion"已勾选,并且显示的"命令"与"版本"都与上一步骤中看到的一致(如下图)。

3.配置Redmine项目对应的SVN仓库

在Redmine网页端,进入一个项目的"配置->版本库",如下图:

点"新建版本库",在URL中输入对应SVN仓库的URL路径,其它位置按需要输入(如下图)。

上图中的URL,如果SVN服务端与Redmine安装在同一个服务器,IP地址可以改为"localhost"。这样,就算服务器的IP地址变了也不影响。

点"创建"后就配置好了一个Redmine项目对应的SVN仓库,如下图:

4.在Redmine中查看SVN

经过上面的配置后,可以在Redmine网页端,进入一个项目的"版本库"页面查看SVN内容,如下图:

5.提交代码时自动更改问题状态

通过下面的配置,可以使得在SVN中提交代码(或其它文件)时自动更改Redmine中的问题状态。

5.1.Redmine的配置

登录网页端Redmine,打开"管理->配置->版本库",勾选"自动获取程序变更"和"启用用于版本库管理的Web Service";点"生成一个key"自动产生一个"版本库管理网页服务 API 密钥"。在下面"用于解决问题的关键字"输入约定的关键字(比如"Finish"),"应用后的状态"中选择一个状态(比如"已解决"),"% 完成"中选择一个百分比(比如"100%")。最后点"保存"。如下图:

上面配置好后,在SVN提交修改时只需在"备注/Message"中写上约定的关键字和对应解决的问题号(比如"Finish #<IssueID>",注意:关键字前面不能连着汉字或标点符号,需用空格隔开)就可以自动关联到对应问题了。但是此时提交后,还需要访问一下Redmine中的"版本库"页面,问题状态才会自动更改。

5.2.SVN的配置

可以在SVN服务器中配置post-commit钩子来实现问题状态的自动更改(这样就不需要提交后再访问一下Redmine的"版本库"页面了)。

可以通过SvnAdmin工具来创建和编辑某个SVN仓库的"仓库钩子"(或者在SVN仓库路径下的hooks文件夹中直接创建一个post-commit文件),在Post-commit hook脚本中输入如下内容:

bash 复制代码
#!/bin/sh
curl "http://<redmine url>/sys/fetch_changesets?key=<your service key>"

其中<redmine url>是Redmine的URL地址(同上,如果SVN与Redmine安装在同一个服务器,IP地址可以用"localhost");<your service key>是之前配置的"版本库管理网页服务 API 密钥"。比如我的post-commit钩子脚本如下:

bash 复制代码
#!/bin/sh
curl "http://localhost:3000/sys/fetch_changesets?key=M2cXXXXXXXXXXrq5"

至此,Redmine中集成SVN才算配置完。

5.3.自动更改问题状态的效果

按照上面配置完后,以后如果提交一个SVN修订是可以解决Redmine的某个问题时,就在"备注/Message"中写上"Finish #<IssueID>"。这样提交后,用井号#指定的问题就会自动改为"已解决"状态,而且会自动关联刚提交的这个SVN修订版本(可以关联多个版本,如下图)。

点击某个修订版本(比如"修订11"),可以查看这个修订版本的详细信息,其中包括"相关的问题"和SVN中修改的文件(如下图)。

点击"差异"可以查看这个版本与前一版本的差异。

也就是说,可以追溯到Redmine的某个问题对应在SVN中增加或修改的内容。反过来也是,可以追溯到SVN的某个修订对应解决Redmine中的问题。

提示:除了用关键字自动关联SVN与Redmine,还可以点上图中的"新增"手动关联。这样可以补充忘记写关键字的关联。

相关推荐
青木川崎3 天前
Mac使用idea连接svn报错svn: E230001: Server SSL certificate verification failed
svn·intellij-idea·ssl
红牛20303 天前
SVN版本回退
svn
a2006380123 天前
【AI-提效】svn diff 配置 bcompare
svn·ai编程
☆七年5 天前
svn添加文件,一次性添加脚本
svn
曹牧6 天前
Eclipse 中 SVN 操作指南
java·svn·eclipse
云霄IT6 天前
TortoiseSVN的Checkout下载太慢了解决办法
svn
阿萨德528号7 天前
Git 与 SVN 对比详解
git·svn
rain bye bye7 天前
SVN 某个用户 进项目需要常常输入密码
svn
写代码的【黑咖啡】9 天前
版本控制工具介绍及常用命令:Git 与 SVN 入门指南
git·svn