【51CTO.com快译】引言:本文将列举一些开源和收费工具,以帮助您在节省时间的基础上提高代码的合并效率。
版本控制类型的软件已在市场上流行许多年了。此类软件能够帮助不同技术水平的开发者去管理他们手头的项目。而今,随着项目经理和团队负责人频繁地要求他们的开发人员执行各种变更,对于版本控制的管理和各种版本的辨析完全成了开发人员的噩梦。
如果你是一位软件开发人员,而且在一提到代码合并工具就没了方向时,本文将为您选取一些业界***的代码合并工具。我们在此汇集了这些工具的主要特点、购置价格和适用对象。当然,好消息是它们中的决大部分都是开源的,而那些收费的工具的价格也并不昂贵。
面对代码合并工具时,开发人员所碰到的问题
许多版本控制程序都具有合并的功能,它们可以辨别出同一个模块中的代码差异,这也是合并功能中的一个关键组件。在一些情况下,开发团队可以利用这些差异性去解决合并时所发生的冲突。当然,开发人员在重构他们的代码时也会引发更多的问题。由于合并工具并不能很好地处理重构问题,因此经常会给开发人员带来挫败感,甚至唯恐进行重构。
当有两个或多个开发人员同时工作在同一个模块上时,就有可能会引发合并上的各种冲突。而当变化增多时,管理合并的负担就会随之加剧。因此开发人员常被告知禁止进行重构,或者他们干脆对于相同的代码不做任何的更改。另外,由于开发人员只对他们所分配到的项目部分负责,因此除非出现了紧急情况而要求被第三方去检查代码,否则开发人员只需要管理好其被分配的代码部分便可。这便导致了项目管理的效率时常非常的低下。
如今的合并解决方案
代码合并使得开发人员能够在更改或修复各种bug之后,进一步地整合他们的代码。因此开发人员需要放心顺利地进行整合,避免出现任何错误。而就算有冲突发生,并且阻止了工具进行自动化合并的时候,他们也需要能够收到相应的报告。
如今DevOps和敏捷方法之类的解决方案已经变得越来越强大,它们能够有助于减少合并中涉及到的大块代码量。虽然各种代码合并工具能够帮助团队成员识别出现的冲突,但是团队在使用相同的代码时仍然需要彼此进行开放式的沟通,并讨论各种出现的冲突。
可用的代码合并工具
在选择代码合并的工具时,我们需要考虑它的各种属性,其中成本和功能永远是最重要的两个方面。当然我们也要考虑到开发团队自身的规模和能力。例如:您既可以考虑选用可视化的工具来协助管理各种合并,也可以基于您的团队能力来选用命令行类型的合并工具。
可视化工具的好处就在于通过图形的界面,让您并行地逐行比较更改之处。但是在某些情况下,可视化工具可能会无法处理您的执行操作,因此了解和使用各种命令行版本也是必要的。
以下我们介绍并罗列了市场上几种常见的合并工具,您可以根据自己的开发场景进行选择。
1.Git
Git是开发人员普遍采用的工具。虽然代码合并不是其仅有的功能,但的确是其主要的用途。由于使用起来并不复杂,Git在业界享有***的口碑与认同。
主要特征
- Git是分布式的。只要您连接到网络中,它就会自动与软件源进行同步,获取***的版本。在同步完成之后,您便可以在无连接的情况下进行使用了。相比而言,其他方案会依赖于中央服务器,而在该服务器关闭时,那些工具将无法工作。
- Git的分布式架构具有内置的互备特点。每个节点都会保存一份项目或文件最近的新实例。
- 其强大的分布式机制非常适合多名开发人员的协作,因此广受欢迎。
购置价格
开源(免费)。
适用对象
有经验、且不怕使用命令行工具的开发人员。
2.KDiff3
KDiff3是一种具有并行地逐行比较功能的合并工具。开发人员能够通过它直接在输出窗口中进行修改。虽然该工具已经长期未被更新了,但是其目前所具有的功能仍表现不错。
主要特征
- KDiff3中的“3”表示可以实现自动化的三路(即:三个文件/目录)合并。
- 在三路合并方式无法确定时,它允许开发人员手动解决各种冲突。
购置价格
开源(免费)。
适用对象
具有各种经验级别的开发人员。该软件的可视界面方便了人们去学习和使用。
3.DiffMerge
DiffMerge是一款易装易用、且有着直观图形界面的工具。它可以被集成到Git的合并工具中。您可以在工具里进行直接更改等操作。
主要特征
- 支持目录比较,有助于判断出高层级的变更。
- 它支持自动化的三路合并。但是需要人工解决任何出现的冲突。
- 该软件可以比较任何两个文件或文件夹。
购置价格
一次性费用:39美元。他们经常会打折促销。
适用对象
任何愿意为代码合并工具花钱的开发人员。
4.Semantic Merge(语义合并)
不同于其他的竞品,Semantic Merge内置了语义解析器,可以通过其功能函数层的报告来解决冲突,而并不变更它们的位置。这使得开发人员更容易实现重构。如果其语义解析器无法判定代码,则可以根据您的需要转换成基于文本的合并工具模式。
主要特征
- 基于解析器的比较和合并。该软件可以判定方法(method)层级的更改,而不仅仅是文本的位置,因此无缝地支持了重构。
- 原生态地支持VBNET、C#、Java和C/C++。
- 允许配置外部解析器以支持其他编程语言。
购置价格
每月6.90美元,和每年59美元,一次性购置费用为152美元,附加20%的年维护费。它能免费开放给各种开源的项目。
适用对象
经常进行重构的开发人员。
5.Beyond Compare
这是一款用于比较和合并的高端产品。凭借着可在线添加资源的能力,它可以支持多种编程语言。Beyond Compare可以读取PDF文件和其他二进制文件进行比较,而大多数其他工具则无能为力。
主要特征
- 支持多语言语法的高亮显示。可以在库中添加其他语言。
- 支持正则表达式,可微调include(包含)以适应比较。
- 可定制差异化的缩进对齐。
- 其专业版本能够支持三路合并。
- 能将二进制文件(如Word、Excel等)转换为文本。
- 其专业版本能够比较注册表的配置单元。
- 其网站还列举了其他功能。
购置价格
标准版:30美元、专业版:60美元。
适用对象
有充沛预算和需要其强大功能的开发团队。
6.Code Compare(代码比较)
Code Compare是一款适用于文件和文件夹比较和合并的工具,同时能够支持多向合并。它虽然能与Visual Studio***集成,但也仅限于Windows相关环境。
主要特征
- 支持命令行和流行的源代码控制集成程序(如Git、SVN等)。
- 能与Visual Studio的扩展相集成。
- 其专业版本支持三路比较与合并。
- 能够实现逐行、逐字、逐符号的比较。
- 通过包含Review Assistant(评审助手),以允许团队在代码评审中添加注释。
购置价格
普通版免费,专业版49美元。
适用对象
该工具面向于Microsoft Visual Studio的开发人员。
7.Meld
Meld的不同之处在于:它允许用户比较不同文件夹中的文件。虽然您不会经常使用该功能,但是在你需要的时候,还是会非常实用的。尽管Meld易于被上手,然而它的开发团队没能及时地更新其相关版本。
主要特征
- 支持对文件和目录的双向以及三向比较。
- 状态栏会根据您对文本的更新而发生变化。
- 支持主流的源代码控制程序。
- 可从开放源代码许可中获得其相应的源码。
购置价格
开源(免费)。
适用对象
具有各种经验级别的开发人员,但不适合那些对于软件更新要求高的组织。
请选择适合您自己的合并工具
当您面对多种选择的时候,请不要局限于成本或预算的因素,而去选择那些开源的方案。通过尝试不同的方法,您总能找到一种最适合于自己开发环境的工具。
原文标题:7 Code Merge Tools to Make Your Life 7x Easier,作者:Ben Putano
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】