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