开源的Clearcase替代方案

4
我正在帮助为一个新项目设置SCM,我们目前正在决定使用哪个版本控制系统(VCS)。
目前的主要竞争者是SVN、ClearCase、SVN+DVCS和仅使用DVCS。
目前,团队倾向于使用SVN或SVN+DVCS。我们想避免ClearCase的开销和管理成本,但需要它提供的工作流程和版本控制选项。我也提出了使用DVCS的选项,这个想法正在被考虑。
对于DVCS,我们正在考虑Mercurial、Bazaar和Git。团队感到很舒适使用SVN,但不认为它会提供所需的多样性,这就是为什么我们正在考虑在SVN之上使用DVCS的选项。
有人对如何实现这样的设置有什么建议吗?(例如现有的工具、过程)
一些关注点包括:
- 安装容易 - 建立工作流程(开发 <-> 代码评审 -> 测试 -> 主干,然后主干 -> 集成测试分支 -> 发布,并把修复错误放入发布分支)、审计(找到一个bug,何时引入的) - 生产度量数据 - 对使用ClearCase的开发人员来说,合理的学习曲线。 - Windows开发 - 集成问题跟踪(可能会使用Redmine,尽管这还没有最终确定)。
4个回答

9
作为ClearCase的管理员,除非您有复杂的合并工作流程,否则我会排除该工具。
您提到的工作流程涉及能够轻松地分支、修复,然后合并回来,这不应该是SVN所希望的。
当您习惯于ClearCase(尤其是非UCM ClearCase)时,最大的陷阱是配置规范的“组合”。 如果您选择DVCS(Mercurial、Bazaar - 或者Git,因为它在Windows上运行得非常好),您将无法获得相同的“继承效果”--(当您使用不同的连续选择规则选择不同版本时--:正如在那个答案中所说的。
在纯粹的集中式版本控制系统中,您可以使用任何规则定义您的工作区(在ClearCase中,您的“视图”是快照或动态视图)。
在分布式版本控制系统中,这将不实用:当您使用它进行分支时,您需要明确定义起点和内容,并轻松地复制到其他存储库。
如果您使用ClearCase UCM,则意味着要识别一致的文件集,这只能通过例如 Git子模块实现。
这些DVCS的复杂性更高,因为它们不记录ClearCase UCM记录的模块(或“文件集合”)之间的依赖关系。
因此,简要概括一下:
  • 安装方便:所有提到的分布式版本控制系统都很容易安装。必须考虑的是用户访问权限的管理。
  • 设置工作流程:分布式版本控制系统支持任何类型的工作流程,甚至是集中式、公共-私有等。关于查找错误,它们都支持某种二分法过程
  • 生成指标:如果您的意思是“关于代码管理的指标”,它们都支持一些完整的日志系统,能够显示很多有关已更改内容的信息。
    但是在“关于工具的指标”方面(进程速度或数据占用空间),这些提到的分布式版本控制工具被认为比SVN快得多(请参见此处的示例)。
  • 对已经熟悉ClearCase的开发人员来说具有合理的学习曲线:GUI可以减轻学习曲线的影响,但是分布式版本控制系统与ClearCase非常不同,正如这个“核心概念”答案所说明的那样。
  • Windows开发:它们在Windows平台上都能很好地运行,也许Mercurial或Bazaar略有优势(更好的集成)。
  • 问题跟踪器集成(可能会使用Redmine,但这还没有确定):Redmine现在支持它们中的大多数(而不仅仅是最初支持的SVN)。

3
Git有什么问题吗?我现在正在Windows上使用Git,它运行得很好。如果你需要一些资源管理器的集成,那么Git Extensions非常有用。

1
Git在Windows上比Linux慢。而且TortoiseGit现在并不是很好用。这就是问题所在。 - Joshua Partogi
如果你是Windows用户,为什么会在意它在Linux上的速度有多快呢?重要的是它与Windows替代方案相比如何(更快)。Tortoise毫无意义。Gitgui运行良好,并且是围绕Git的功能设计的。 - T.E.D.

1

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


有一个关于Git/VS集成的SO问题。我似乎找不到它了,但我的评论(仍然适用)是,使用像Git这样的编辑/合并系统,您实际上不需要VS集成。您将所有内容都拉下来,然后进行VS操作(代码,调试等),然后合并。在开发过程中,无需像管理锁定时那样不断返回修订控制系统。 - T.E.D.
虽然这是正确的,但开发人员通常习惯使用IDE而不是命令行版本控制,因此如果您可以有基本的集成来拉取和合并所有其他相等的内容,则可能需要在IDE中支持拉取和合并的那一个。 - Jared

0

如果您可以放弃需要在Windows上运行的要求,那么我建议看看Aegis


经过更详细的了解,Aegis并不是一个版本控制系统。它旨在包装版本控制系统(和其他工具),以提供额外的功能,如自动化测试、共享对象库和代码审查。我仍然可以看到它在其他情境下有用,所以感谢分享。 - deterb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接