我们目前正在为我们的项目使用StarTeam,许可即将到期。我们正在考虑转向Team Foundation Server或类似的方式,但是推动(主要来自我和另一个人)转向某种形式的分布式版本控制。其中一个问题是,我们的变更经理希望能够通过更改请求进行跟踪和发布(如StarTeam中所述),我不相信这可以通过Mercurial或Git开箱即用轻松完成(请如我错了请纠正我)。从StarTeam迁移到分布式源代码管理
这是一个拥有数千个Java文件和PL/SQL包的15岁以上的产品,由5-6个开发小组维护,总共有30-40个开发人员。对我而言,这似乎会使分布式存储库成为“早期提交,经常提交”思维模式的噩梦。每个团队都将在同一个存储库中完全不同的子系统上工作这一事实使得它在我的脑海中变得更加棘手。
我们对任何改变目前的StarTeam过程是这样的:
- 锁定的文件(S)你想工作,
- 会让你的整个变化,并把它从一个副本回顾了网络上开车,
- 入住(和解锁)已更改的文件,希望有人没有强行破锁的,
- 希望你的变化是从别人的变化构建不破其他文件
就我个人而言,我认为“锁定”文件的想法是荒谬的。团队之间应该有足够的沟通,这样你就不需要了。
有没有人在这里有类似大小项目的分布式存储库的经验?您能否就版本控制和/或变更管理解决方案提出任何建议?主要要求是系统能够管理客户发起的变更请求,并强制开发人员将他们的签入链接到一个。
谢谢。
您将如何处理(例如)20项更改请求计划投入生产的情况,但是在最后一分钟决定应该撤销一项?从我所看到的情况来看,您必须在合并之前恢复到修订版本,然后合并它后面的所有情况。这似乎是一个很大的努力。使用我们现有的系统,我们不会发布与该CR相关的文件(假设它们不属于另一个CR)。 – Samah
@Samah这真的取决于你所遵循的开发模式。我强烈建议,如果你真的考虑git,你可以考虑调整你的进程以利用它的特性(比如便宜的分支,逻辑提交)。作为一个例子,对于bugfix版本,当我们计划发布时,我们创建了一个新版本分支。这些更改由各种来源(开发分支,主题分支)的发布主管合并或挑选到此分支中。如果我们改变了主意,他可以在提交时恢复git,以退出或重新绑定并清除更改。 – djs
很好!我与Mercurial合作,当我与客户交谈时,他们经常要求“变更请求”。当我告诉他们Mercurial没有这种想法时,他们会感到惊讶。像Git一样,Mercurial是一个*重点*工具。它可以进行版本控制,并让您可以定义工作流程。如果您愿意,您可以根据更改请求来说明工作流程,但您不必这样做。 –