Redmine和Git集成

我正在考虑从svn和Trac转移到git和Redmine。 我只是想知道每个人的经验是什么。 git与Redmine的整合程度如何?

我决定从svn更改为git – 我们的分布式工作,需要经常分支和合并,使用git使生活变得相当容易。 但是我们可能需要将事情分成多个项目。 从我一直在读的东西,git和多个项目都不太适合Trac的整合。 除此之外,在我对git的调查中,Redmine也引起了我的注意,其中一些function看起来非常有用。

然而,我还没有find尽可能多的git和Redmine的用户体验(可能是由于我缺乏search技巧…),所以想听听你的意见和例子。

去年我build立了一个使用Gitorious和Redmine的系统。 你可以把Git直接与Redmine集成,没有问题,但我强烈build议你看看Gitorious,以及控制你的仓库和跟踪他们的事件的工具。 它也可以用来控制对存储库的访问等。

整合Gitorious和Redmine非常简单。 我写了一个脚本,打破了Gitoriouspath。 当你使用Gitorious的时候,它们被保存在文件系统中,所以把它们连接到Redmine将会有点复杂。 我的脚本以更易读的格式与这些存储库build立链接,因此将它们链接到Redmine非常简单,创build项目时只需要一次。 你可以在这里find脚本。

基本上你不需要担心集成,因为Redmine支持git开箱即用。 当然,你需要让git服务运行在你的“生产”仓库的服务器上(你链接到Redmine的那些,做你的自动化testing等等),但是这也可以用Gitorious来解决。

其实我写了关于这个问题的学士论文。 由于Gitorious和Redmine已经发展了很多,所以它已经有点过时了,但是如果你想阅读的话,我可以提供它。 本文解释了需要做什么(一些问题已经被这两个工具解决了),它还包括一个持续集成环境,当用户将更改推送到存储库并将其放入代表存储库时,会自动构build包,testing人员等可以很容易地下载他们与networking浏览器。

Redmine去年有一些问题,特别是缺乏子项目有点烦人,但在0.9版本中已经纠正了。 另外插件应该在投入使用之前进行testing,有些只是混合不好,有些根本不工作(可能是Redmine版本与插件版本的冲突)。 总而言之,Redmine工作得很好,应该可以轻松扩展到您的需求。 对Gitorious的支持是非常好的,对于Redmine来说有点零星的(该死的法语?),但是这两个工具都有足够大的用户基础,他们应该是安全的投注。

Git是一个非常好的版本控制工具,尤其是敏捷团队。 这需要一些学习,你应该写一个关于如何使用它的指南,以便你的开发者充分利用它,但是一旦你了解了它,这是非常有效的。 我们写了我们自己的说明正常的工作过程。 分支,合并等应该解释,例如在你的个人存储库的主分支上工作是不是一个好主意。 总是创build一个分支并在那里工作。 当你从其他版本库中对主分支进行修改时,用这种方式来处理合并更容易 – 而且你也不会意外推送你不想要的东西。

这两个平台的灵活性是一个很好的比赛

集成设置

  • 使用gitolite或gerrit在另一个地方设置官方的git仓库(master),以便于pipe理,因为redmine不提供git的这些function
  • 运行简单的cron作业来同步master git repo以redmine git repo作为只读模式

两者的集成使用

  • 自动查看与git commit的问题的关系
  • 使用git commit自动控制问题

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

无论如何,我很高兴与整合。

有限的支持多git存储库

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

另外,当你第一次设置git仓库时,它不能被改变,意识到这一点

你好,我前一段时间写了一个指南。 该指南安装干净的GIT和干净的红矿。 没有其他额外的软件需要。 它甚至可以让你在redmine中处理帐户,但是使用http git。

你可以在这里find它: http : //codersopinion.com/blog/install-redmine-with-automated-git-on-centos-redhat/

因为我前一段时间编写了这个指南,所以版本可能不匹配,但是它应该仍然适用于当前的版本。

在寻找如何将Redmine与Gitorious整合在一起时,我偶然发现了这个线索。 既然我们设法达到这个目标,现在已经有了一些长期(或中期)的期限,我想我会分享它。

我们采取了不同于cronjob的方法,因为它对我们来说有点太不灵活了。 在我们的博客文章中,我们还参考了Redmine和Gitorious的安装部分的其他教程:

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

我们现在使用这个系统已经有5个月了,并且非常满意。 唯一的问题是,每次在Redmine中创build一个新项目时,都必须运行一些terminal命令,以便将项目连接到存储库。 既然我们不是一个一个地制作项目,那对我们来说就是正确的做法。

我希望这有帮助!

您可能要考虑的另一件事是访问控制。 如果你想能够通过redmine控制对不同项目的提交访问,那么这将是有帮助的。

http://wiki.bitnami.org/Applications/BitNami_Redmine_Stack#How_to_configure_Redmine_for_advanced_integration_with_Git

不知道如何将redmine账户与Gitorious链接起来,但这也是可能的。

我很满意我的git + redmine设置(并且使用gitolite进行仓库pipe理),下面是一些用来利用这两种工具的python钩子:

Preambule :设置一个rest.bot用户

挂钩操作将被authentication为rest.bot用户。
转到Redminepipe理控制台并创build这个rest.bot用户。
在“ angular色和权限”页面上,创build包含“ 查看问题”和“仅将权限编辑问题”Rest Rest组。
不要忘记在“ 工作stream”页面上configuration此angular色的授权状态转换。
rest.bot用户添加到已分配angular色Rest bot的项目中。

客户端提交-msg钩子:展开问题编号以发布标题

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

这个钩子允许你在你的git commit消息中引用一个Redmine问题,方法是简单地键入它的问题编号,并通过附加问题主题自动扩展。

 'working on ref #1234' => 'working on ref #1234:Eliminate dangling pointers' 

服务器post-receive hook:通过parsinggit commit消息来改变问题的状态

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

在提交消息中引用问题是默认的Redmine附带的一个function,但仅限于简单地引用(不更改状态)或closures问题。
这个钩子的目的是扩展一组被认可的关键字来改变提交问题的状态:

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

挂钩负责在提交完成后立即获取更改,以便更改在网站上实时反映。