Redmine和Git集成

37

我正在考虑从svn和Trac转移到git和Redmine。我想知道大家对此的经验如何。git与Redmine集成得如何?

我已经决定从svn转移到git了——我们的分布式工作,需要频繁地分支和合并,这将使git在生活中更加方便。但我们可能需要将项目拆分为多个部分。从我所看到的内容来看,git和多个项目与Trac不太兼容。除此之外,在我的git调查中,Redmine也引起了我的注意,并且其中一些功能看起来非常有用。

然而,我没有找到像我想要的那样多的关于git和Redmine的用户体验(可能是由于我的搜索技巧不足...),因此想听听你们的意见和例子。

6个回答

30
去年我建立了一个系统,用到了Gitorious和Redmine。你可以直接将git与Redmine整合,没有问题,但我强烈建议您也看看Gitorious作为控制存储库并跟踪其事件的工具。它还可用于控制对存储库的访问等。
整合Gitorious和Redmine非常简单。我编写了一个脚本来还原Gitorious路径的哈希值。当使用Gitorious时,它们被保存在文件系统中哈希化,因此否则将这些存储库链接到Redmine会有点复杂。我的脚本以更可读的格式创建了这些存储库的链接,因此将它们链接到Redmine非常简单,并且只需要在创建项目时执行一次。您可以在这里找到该脚本。
基本上,由于Redmine支持git-out-of-box,所以您不需要过多担心集成-某种程度上。当然,您需要在“生产”存储库(链接到Redmine、进行自动化测试等)所在的服务器上运行git服务,但这也可以通过Gitorious解决。
我实际上写了我的学士论文关于这个问题。由于Gitorious和Redmine都有很大的发展,所以它已经有点过时了,但如果你想阅读它,我可以提供它。论文解释了需要做什么(其中一些问题已经被这两个工具解决),并且还包括一个连续集成环境,当用户将更改推送到存储库时会自动构建软件包,并将它们放入一个reprepro存储库中,测试人员等可以通过Web浏览器轻松下载它们。
去年Redmine遇到了一些问题,特别是缺乏子项目有点烦人,但在0.9版本中已经得到纠正。此外,在生产使用之前应该充分测试插件,有些插件不兼容,有些根本无法工作(可能是Redmine版本与插件版本之间的冲突)。总的来说,Redmine工作得相当不错,并且应该很容易扩展以满足您的需求。对于Gitorious的支持非常出色,对于Redmine则有点零散(该死的法国人?),但这两个工具都有足够大的用户群体,应该是安全的选择。
Git是一个非常好的版本控制工具,特别适合敏捷团队。它需要一些学习,您应该为您的开发人员编写一个使用指南,以便充分利用它,但是一旦学会了,它非常高效。我们编写了自己的指南,其中只说明了正常的工作流程。例如,应该解释分支,合并等,例如在个人存储库的主分支上工作不太好。总是创建一个分支并在那里工作。当您从其他存储库拉取更改到您的主分支时,用这种方式处理合并更容易-而且您不会意外地推送您不想要的东西。

8
如果可能的话,我也希望能够获取那篇论文的访问权限。 - Shane O'Grady
2
我会看看能否提供它。 - Makis
你有没有机会把论文的链接放上去? - Utkarsh Sinha
抱歉,我无法完成这个任务。 - Makis

12

由于这两个平台的灵活性,它们非常匹配。

集成设置

  • 使用gitolite或gerrit在另一个地方设置官方git存储库(主分支)以便进行简单的管理,因为redmine不提供对git的这些功能
  • 运行简单的cron作业将主git repo同步到redmine git repo作为只读模式

两者的集成用途

  • 自动查看与git提交有关的问题
  • 通过git提交自动控制问题

请查看我的博客ALM - 从需求到实现和部署ALM - redmine与git的集成,做得很好

总之,我对这个集成感到满意。

多个git存储库的有限支持

我注意到的一件事是它不能支持多个git存储库,请参见特性http://www.redmine.org/issues/779

此外,当您第一次设置git存储库时,它不能更改,请注意


我从你的帖子中获得了一些集成技巧。 - misaxi
听起来和我们的设置很相似,只是我们使用了一个 Redmine 插件,可以处理来自 gitolite 的 web 钩子。 - matyjas

8

1
当我在搜索如何正确地将Redmine与Gitorious集成时,偶然发现了这个帖子。由于我们已经成功实现了这一点,并且现在拥有了一些长期(或中期)的经验,因此我想分享一下。
我们采用了不同的方法,而不是cronjobs,因为对我们来说它有点过于死板。我们还在博客文章中引用了其他关于Redmine和Gitorious安装部分的教程。

http://codepool.at/blog/archives/12

我们现在已经使用这个系统大约5个月了,对它感到相当满意。唯一的“问题”是每次在Redmine中创建一个新项目时,您需要运行一些终端命令才能将项目连接到存储库。由于我们不是批量创建项目,这对我们来说是正确的方法。
希望这可以帮助到您!

1

1

我对我的git+redmine设置感到满意(并使用gitolite进行存储库管理),以下是我使用的一些python钩子,以利用这两个工具:

前言:设置一个rest.bot用户

将作为rest.bot用户进行挂钩操作。
进入Redmine管理控制台并创建此rest.bot用户。
角色和权限页面上,创建一个Rest bot组,并将查看问题编辑问题作为唯一权限。
不要忘记在工作流程页面上配置此角色的授权状态转换。
rest.bot用户添加到您的项目中,并分配Rest bot角色。

客户端commit-msg钩子:将问题编号扩展为问题标题

https://gist.github.com/KraYmer/4443858 编辑并复制到客户端机器上的<git dir>/share/git-core/templates/hooks

这个钩子允许你在git提交信息中仅输入问题号码,就能自动扩展为问题主题,并将其附加到提交信息中。该功能与Redmine问题相关。
'working on ref #1234' => 'working on ref #1234:Eliminate dangling pointers'

服务器 post-receive 钩子:通过解析 git 提交信息更改问题状态

https://gist.github.com/KraYmer/5292077 可以编辑并复制到服务器上的 .gitolite/common/hooks 目录中

在提交信息中引用问题 是默认 Redmine 的一个功能,但仅限于简单地引用(不更改状态)或关闭问题。
此钩子旨在扩展一组可识别的关键字,以更改提交时问题的状态:

$ git push
...
remote: [post-receive] Parsing 1 commits for branch 'develop'
remote: [post-receive] Setting issue #1608 status to 'totest'
...

该钩子负责在提交完成后立即获取更改,因此更改会实时反映在网站上。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接