GeXiangDong

精通Java、SQL、Spring的拼写,擅长Linux、Windows的开关机

0%

redmine和git集成

安装redmine

1
apt-get install redmine redmine-pgsql apache2 libapache2-mod-passenger apparmor

如果安装过程后自动启动的配置出错,可以随时使用如下命令启动配置redmine的进程

1
dpkg-reconfigure -plow redmine 

安装完后配置remine,在Apache的000-default.conf中映射
在/web/htdocs(网站根目录)下创建一个连接

1
ln -s /usr/share/redmine/public redmine

在apache 0000-default.conf中加入(也可在其他部分)

1
2
3
4
<Directory /web/htdocs/redmine>
RailsBaseURI /redmine
PassengerResolveSymlinksInDocumentRoot on
</Directory>

之后可以用

1
service restart apache2

重启apache,并在浏览器输入 http://localhost/redmine/ 查看是否已经成功。

如果出现类似如下错误:

Web application could not be started
cannot load such file -- bundler/setup (LoadError)
  /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
  /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
  /usr/lib/ruby/vendor_ruby/phusion_passenger/loader_shared_helpers.rb:245:in `block in run_load_path_setup_code'
  /usr/lib/ruby/vendor_ruby/phusion_passenger/loader_shared_helpers.rb:348:in `running_bundler'
  /usr/lib/ruby/vendor_ruby/phusion_passenger/loader_shared_helpers.rb:243:in `run_load_path_setup_code'
  /usr/share/passenger/helper-scripts/rack-preloader.rb:100:in `preload_app'
  /usr/share/passenger/helper-scripts/rack-preloader.rb:158:in `<module:App>'
  /usr/share/passenger/helper-scripts/rack-preloader.rb:29:in `<module:PhusionPassenger>'
  /usr/share/passenger/helper-scripts/rack-preloader.rb:28:in `<main>'
Application root
/usr/share/redmine
...

可能是ruby 没有安装bundle所致,用如下命令安装

1
gem install bundle

安装好后,要把目录权限修改下

1
chown -R nobody:nogroup /usr/share/redmine

注意上面的nobody nogroup是apache用户和组

安装 git

1
apt-get install git-core

配置

创建redmine用的仓库镜像

在/var/lib/redmine下创建一个repos目录,也可以放其他地方。

1
2
3
4
cd /var/lib/redmine
mkdir repos
git clone --mirror /home/git/projects/test.git
chown -R git:git test.git

注意:不需要单独创建项目的.git目录,git clone会自动创建。

修改mirror里地权限设置

1
2
3
cd /var/lib/redmine/repos/test.git
chmod a+rX -R ./
git config --add core.sharedRepository 644

以上设置是为了确保redmine程序对这里有读取的权限。

如果redmine访问时出现「404 版本库中不存在该条目和(或)其修订版本。」提示,那么可能是上述配置没有加好。

在redmine中登记仓库镜像位置

进入redmine对应的项目->配置->版本库,选择新增版本库
SCM选择Git,库路径处输入 /var/lib/redmine/repos/test.git,并设置其他项目最后保存。(注意:如果用的docker redmine,这里要填写的路径是docker内的路径,不要写成宿主机的路径,一般是存在宿主机上,通过docker -v参数映射给docker访问,这是就是映射的目录+仓库目录了)

从redmine里版本库标签看到的是master分支的源码,可以前后到其他标签,如果默认想看其他标签的,例如develop分支

1
2
cd /var/lib/redmine/repos/test.git
git symbolic-ref HEAD refs/heads/develop

这样默认就是develop分支了

git commit message 和 redmine issue 关联

以后push到git server的更新,commit message中有 #101 字样的提交会被自动关联到101号问题。

例如:

fixed bug #101 @1h30m 

如果需要自动更改问题状态,请在管理->配置->版本库处设置关键字。

设置git仓库,收到提交后自动更新redmine用镜像

通过设置hooks 来实现

1
cd /home/git/projects/test.git/hooks

创建post-receive文件,文件内容

1
2
3
#!/bin/bash
/usr/bin/git push --mirror /var/lib/redmine/repos/test.git
curl "http://127.0.0.1/redmine/sys/fetch_changesets?key={apikey}" &

apikey在redmine 管理->配置->版本库下面,选中“启用用于版本库管理的WebService”,然后生成一个API key。并把生成的key拷贝到这里。

1
2
chmod 755 post-receive
chown git:git post-receive

登记耗时不成功的可能原因

如果在 git commit message 中写的 耗时不被记载入redmine,可能是以下几个原因

  1. 在版本库配置「在提交信息中引用和解决问题」处,记录的活动选择了「默认」,而枚举值设置中,「活动(时间跟踪)」没有设置默认值
  2. 提交的用户和项目中设置的开发人员不匹配,git提交的用户,用户名和邮箱需要和项目中开发人员对应的账号匹配