【问题标题】:Redmine & Git integrationRedmine 和 Git 集成
【发布时间】:2010-05-09 13:37:30
【问题描述】:

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

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

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

【问题讨论】:

    标签: git redmine


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 如果可能的话,我也很想阅读那篇论文?
    • 我看看能不能提供。
    • 你有没有机会放论文的链接?
    • 抱歉,我做不到。
    【解决方案2】:

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

    集成设置

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

    两者的整合使用

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

    请看看我的博客ALM – From requirement to implementation and deploymentALM – redmine integration with git, well done

    无论如何,我对集成感到满意。

    对多 git 存储库的有限支持

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

    另外,当你第一次设置 git 存储库时,它不能更改,请注意这一点

    【讨论】:

    • 我从您的帖子中获得了一些集成块。
    • 听起来像我们的设置,只是我们使用了 Redmine plugin 可以处理来自 gitolite 的网络挂钩。
    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案4】:

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

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

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

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

      我希望这会有所帮助!

      【讨论】:

        【解决方案5】:

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

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

        不确定如何将 redmine 帐户与 Gitorious 关联,但也有可能。

        【讨论】:

          【解决方案6】:

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

          序言:设置 rest.bot 用户

          Hooks 操作将在被验证为 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目录中

          Referencing issues in commit messages 是默认 Redmine 附带的功能,但仅限于简单引用(未更改状态)或关闭问题。
          这个钩子旨在扩展已识别的关键字集以更改提交问题的状态:

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

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

          【讨论】:

            猜你喜欢
            • 2013-08-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多