37

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

我已经决定从 svn 更改为 git - 我们的分布式工作,并且需要经常分支和合并将使 git 的生活变得更加轻松。但是我们可能需要为此将事情分成多个项目。从我一直在阅读的内容来看,git 和多个项目与 Trac 的集成并不太顺利。除此之外,在我对 git 的调查中,Redmine 也引起了我的注意,其中一些功能看起来非常有用。

但是,我没有找到我想要的那么多 git 和 Redmine 的用户体验(可能是由于我缺乏搜索技能......),所以想听听你的意见和例子。

4

6 回答 6

30

去年我建立了一个使用Gitorious和 Redmine 的系统。您可以将 git 直接与 Redmine 集成,那里没有问题,但我强烈建议您查看 Gitorious 以及控制您的存储库并跟踪其事件的工具。它还可以用于控制对存储库等的访问。

集成 Gitorious 和 Redmine 非常简单。我写了一个脚本来取消对 Gitorious 路径的哈希处理。当您使用 Gitorious 时,它们会保存在经过哈希处理的文件系统中,因此将这些存储库链接到 Redmine 会有点复杂。我的脚本以更易读的格式链接到这些存储库,因此将它们链接到 Redmine 非常简单,并且只在创建项目时需要一次。您可以在此处找到脚本。

基本上你不需要太担心集成,因为 Redmine 支持 git out-of-box - 有点。当然,您需要在“生产”存储库所在的服务器上运行 git 服务(链接到 Redmine、进行自动化测试等),但这也可以通过 Gitorious 解决。

我实际上写了关于这个问题的学士论文。它已经有点过时了,因为 Gitorious 和 Redmine 都发展了很多,但如果你想阅读它,我可以提供它。论文解释了需要做的事情(一些问题已经被这两个工具解决了),它还包括一个持续集成环境,当用户将更改推送到存储库时自动构建包并将它们放入测试人员所在的 reprepro 存储库等可以使用网络浏览器轻松下载它们。

Redmine 去年遇到了一些问题,尤其是缺少子项目有点烦人,但在 0.9 版本中已得到纠正。此外,插件应该在投入生产使用之前进行充分测试,有些只是不能很好地混合,有些根本不起作用(可能是 Redmine 版本与插件版本的冲突)。总而言之,Redmine 运行良好,应该可以轻松扩展以满足您的需求。对 Gitorious 的支持非常好,对于 Redmine 的支持有点零星(该死的法语?),但是这两种工具都有足够大的用户群,它们应该是安全的赌注。

Git 是一个非常好的版本控制工具,尤其适用于敏捷团队。这需要一些学习,您应该为您的开发人员编写一份如何使用它的指南,以充分利用它,但是一旦您学会了它,它就会非常高效。我们编写了我们自己的,它只是说明了正常的工作过程。应该解释分支、合并等,例如在您的个人存储库的主分支上工作并不是一个好主意。始终创建一个分支并在那里工作。当您从其他存储库中拉取更改到您的主分支时,以这种方式处理合并更容易 - 而且您不会意外推送您不想要的东西。

于 2010-05-09T14:13:06.883 回答
12

由于这两个平台的灵活性,这是一个很好的匹配

集成设置

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

两者的集成使用

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

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

无论如何,我对整合感到满意。

对多 git 存储库的有限支持

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

此外,当您第一次设置 git 存储库时,它无法更改,请注意这一点

于 2011-02-12T05:03:46.653 回答
8

您好,我前段时间为此写了一个指南。该指南安装了一个干净的 git 和一个干净的 redmine。不需要其他额外的软件。它甚至可以让你通过 http git 处理 redmine 中的帐户。

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

因为我不久前编写了本指南,所以版本可能不匹配,但它仍应适用于当前版本。

于 2012-07-02T11:58:03.540 回答
1

我对我的 git+redmine 设置感到满意(并使用 gitolite 进行 repos 管理),这里有一些我用来利用这两种工具的 python 钩子:

序言:设置rest.bot用户

Hooks 操作将在认证为rest.bot用户的情况下执行。
转到 Redmine 管理控制台并创建这个rest.bot用户。
角色和权限页面上,创建一个具有仅查看问题编辑问题权限的Rest 机器人组 。 不要忘记在工作流页面上为此角色配置授权状态转换。 将rest.bot用户添加到您的项目中,并分配了角色Rest bot 。

客户端提交消息挂钩:将问题编号扩展到问题标题

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'
...

一旦提交完成,钩子就会负责获取更改,以便更改实时反映在网站上。

于 2013-04-02T13:07:34.977 回答
1

在搜索如何将 Redmine 与 Gitorious 正确集成时,我偶然发现了这个线程。由于我们设法实现了这一点,并且现在有一些长期(或中期)的经验,我想我会分享它。

我们采用了与 cronjobs 不同的方法,因为它对我们来说有点太不灵活了。Redmine 和 Gitorious 的安装部分我们也参考了我们博文中的其他教程:

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

我们现在使用这个系统大约 5 个月,并且对它非常满意。唯一的“问题”是每次在 Redmine 中创建新项目时,都必须运行一些终端命令,以便将项目连接到存储库。由于我们不是集体创建项目,因此这对我们来说是正确的方法。

我希望这有帮助!

于 2012-10-19T06:05:51.580 回答
1

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

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

不确定如何将 redmine 帐户与 Gitorious 相关联,但这也是可能的。

于 2013-01-03T18:24:02.377 回答