我正在帮助为一个新项目设置 SCM,目前我们正在决定 VCS。

目前的主要竞争者是 SVN、ClearCase、SVN+DVCS,以及 DVCS。

目前,团队倾向于SVN或SVN+DVCS。我们希望避免 ClearCase 的费用和管理成本,但希望它提供的工作流程和版本控制选项。我也提出了使用 DVCS 的选择,这个想法正在考虑中。

对于 DVCS,我们正在考虑 Mercurial、Bazaar 和 Git。该团队对 SVN 感到满意,但认为它不会提供所需的多功能性,这就是为什么我们在 SVN 选项之上考虑 DVCS。

有没有人有任何建议(例如现有的工具、流程)来进行这样的设置?

担忧包括:

  • 易于设置
  • 设置工作流程(开发 <-> 代码审查 -> 测试 -> 主干,然后主干 -> 集成测试分支 -> 发布,并将错误修复放入发布分支),审核(发现错误,何时引入)
  • 生成指标
  • 对于习惯 ClearCase 的开发人员来说,学习曲线合理。
  • Windows开发
  • 问题跟踪器集成(可能是Redmine,尽管它不是一成不变的)
有帮助吗?

解决方案

作为 ClearCase 的管理员,我会排除该工具,除非您有复杂的合并工作流程。

工作流程 你提到的涉及到能够轻松地分支、修复然后合并回来,这不应该有利于 SVN。

当您习惯 ClearCase(尤其是非 UCM ClearCase)时,最大的陷阱是配置规范的“组成”。
如果您选择 DVCS(Mercurial、Bazaar —— 或 Git),因为它 在 Windows 上运行得非常好), 你会 不是 能够得到相同的“继承效果”——(当你用不同的连续选择规则选择不同的版本时——:正如该答案中所说:

在纯粹的中央 VCS 中,您可以使用您想要的任何规则来定义您的工作区(在 ClearCase 中,您的“视图”可以是快照或动态)。
这在 DVCS 中是不切实际的(如“分布式”):当您用它创建分支时,您需要有一个明确定义的起点和内容,并且可以轻松复制到其他存储库。

如果您使用 ClearCase UCM,这意味着识别一致的文件集,这只能通过 - 例如 - 来实现 Git 子模块.
这些 DVCS 的复杂性更高,因为它们不像 ClearCase UCM 那样记录模块(或“文件集”)之间的依赖关系。

所以,回顾一下:

  • 易于设置:所有提到的 DVCS 都很容易设置。必须考虑的是用户访问方面的管理。
  • 设置工作流程:DVCS 支持任何类型的工作流程,甚至是集中式工作流程、公共-私有工作流程,或者……关于发现错误,他们都支持某种 对分过程.
  • 生成指标:如果您的意思是“有关托管代码的指标”,那么它们都支持一些完整的日志系统,能够显示有关已更改内容的大量信息。
    但就“有关工具的指标”(进程速度或数据占用的空间)而言,提到的 DVCS 工具被认为比 SVN 快得多(请参阅 举个例子).
  • 对于习惯 ClearCase 的开发人员来说合理的学习曲线:GUI 可以成为缓解学习曲线的一个因素,但 DVCS 与 ClearCase 有很大不同,因为“核心概念” 答案说明。
  • Windows开发:它们都在 Windows 平台上运行良好,可能比 Mercurial 或 Bazaar 稍有优势(更好的集成)。
  • 问题跟踪器集成(可能是Redmine,尽管它不是一成不变的):Redmine 现在支持大多数(而不仅仅是像开始时那样支持 SVN)

其他提示

Git 有什么问题?我现在在 Windows 上使用 Git。它工作得很好。Git 扩展 如果您想要一些资源管理器集成(如果这是您的问题),则非常有用。

我没有使用 Clearcase 的经验,但希望以下内容会对一些人有所帮助。你的问题遗漏了一些我在做出决定之前会考虑的信息。首先,您将拥有多少源代码?虽然 SVN 适合中型到大型项目,但对于像 Linux 内核这样的真正大型项目,Git 将提供更好的性能。其次你用的什么IDE?而 Mercurial、Git 和 SVN 都有 Visual Studio 和 Eclipse 插件,质量非常好。根据 Redmine 上的维基百科文章,您正在查看的任何 SCM 系统都将集成。以下博客可能对您有所帮助,因为它是由一个以编写 SCM 系统为生的人写的。http://www.ericsink.com/

如果您可以放弃它需要在 Windows 上运行的要求,那么我建议您查看 宙斯盾.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top