版本控制:跟踪软件更改的人,内容和时间

您可以说,从内部软件开发的角度来看,版本控制的反面是混乱的。 如果开发团队无法管理他们的各种版本的工作,那么事情很快就会失控。

版本控制软件是软件配置管理的组成部分,可帮助团队管理对文档,程序,网站和其他开发计划的更改。 鉴于许多开发工作都依赖于团队同时处理相同文件这一事实,缺少版本控制可能会造成严重的问题。

[ 同样在InfoWorld上:Git教程:Git版本控制入门 ]

当多个团队设计,开发和部署应用程序时,通常会在不同站点上部署同一软件的一个以上版本,并且开发人员会同时处理更新。 仅某些软件版本中可能存在某些功能,在许多情况下还包括一些错误。

什么是版本控制?

进行更改需要具有检索和运行不同版本软件的能力,以便开发人员可以确定哪个版本存在问题。

版本控制也可以称为修订控制或源代码控制。 研究公司Gartner的顾问Thomas Murphy说,这就是组织如何管理源代码的更改并保留这些更改的历史。

有两种方法:一种允许您处理文档,但没有其他人可以同时更改它。 另一种方法的确允许多个用户同时进行更改。 “就像两个作者在Google Docs中处理同一文档一样,” Murphy说。 无论哪种方式,您都需要工具来防止开发人员互相干扰。 版本控制可以通过跟踪更改及其发生的顺序来支持这两种情况。

Forrester Research的首席分析师Jeffrey Hammond说,版本控制工具还使开发人员可以更改代码并对其进行测试,而不必担心如果更改无效将丢失现有代码。

“如果您曾经有过Word [文档]或PowerPoint演示文稿,不得不解决多个编辑者的编辑,或者想删除某些内容,但又害怕永久删除它们,那么您就知道需要版本控制了,” Hammond说。

根据Murphy的说法,版本控制软件的需求随着软件开发的增长而增长。 但是到目前为止,该软件的使用并没有真正扩展到开发人员市场之外,甚至没有进入低代码/无代码领域。

[ 同样在InfoWorld上:什么是敏捷方法论? [现代软件开发讲解 ]

版本控制软件

Forrester的市场分析指出,大多数开发团队都使用某种版本控制。 在2018年发布的最新Forrester Business Technographics开发人员调查中,该公司发现90%以上在企业组织工作的开发人员和开发经理使用源代码管理系统。

开发团队可以采用简单的方法来保留程序的不同版本的多个副本,然后适当地标记它们; 但是,当程序有许多相似的副本时,效率低下并可能导致错误。

这就是为什么版本控制软件有意义。

那么组织如何选择最合适的平台来满足他们的需求?

首要任务之一是了解平台之间的细微差异。 本质上,所有版本控制平台的核心都是Git ,这是一个开放源代码的分布式版本控制系统,用于在软件开发过程中跟踪源代码的更改。 尽管Git旨在帮助协调程序员之间的工作,但是Git版本控制可用于跟踪任何文件集中的更改。

墨菲说:“如果您不基于Git构建,则说明您正在为一个专业市场而构建。” 他说,在Git之前,市场已经通过Subversion从根本上转变为开源,这从根本上扰乱了商业市场。

鉴于主要产品都基于同一Git引擎构建,因此买家需要考虑细微的差异以找到最合适的产品。 “您发现的确没有什么区别; 墨菲说:“这更多的是关于您收集的收藏品,个人喜好或从价格角度看东西的包装方式。”

[ 同样在InfoWorld上:什么是CI / CD? 持续集成和持续交付的解释 ]

GitHub是一个选择,Murphy表示GitHub提供了最大的开源存储库,具有用于管理软件项目/社区的工具,并且拥有广泛的合作伙伴,并通过附加功能对其提供支持。

微软还提供了面向企业市场的GitHub Enterprise和Azure Team ,后者是Team Foundation的后继产品。 Murphy说,Azure Devops是为需要更集成的应用程序开发生命周期的组织提供的工具集合。 它具有与GitHub类似的功能,但将其与敏捷计划和测试管理相结合。

GitLab是另一个开源产品,具有集成项目和持续集成功能等功能,因此团队可以自动测试和交付代码。 他们可以访问项目的所有方面并查看代码。

Murphy说,Atlassian的Bitbucket通常由其他Atlassian工具的用户部署。 他说,与其他版本控制系统一样,许多价值和区别在于核心源存储库如何与工作流以及构建和测试更改的系统相结合。

IBM提供了Rational Team Concert(RTC),这是一个基于Jazz和Eclipse的多平台团队协作工具,可为开发人员提供用于敏捷应用程序生命周期管理的功能。 RTC功能包括集成计划,任务跟踪,团队和流程意识,项目运行状况跟踪以及跨多个平台的统一界面。

还可以使用较旧的选项Concurrent Versions System(CVS),这是一个免费的系统,可以跟踪一组文件中的所有工作和更改,并允许多个开发人员进行协作。 CVS使用增量压缩来有效存储同一文件的不同版本,这适用于大型文本文件,从一个版本到另一个版本的更改很少(通常是源代码文件)。

[ 同样在InfoWorld上:什么是GitHub? 不仅仅是云中的Git版本控制 ]

版本控制软件的主要功能

如何缩小选择范围? 公司应首先考虑成本结构,如何计划使用软件以及如何将软件分发给用户。 以下是一些其他一般注意事项。

版本控制软件可以部署在本地服务器上,公司拥有的数据中心中还是通过云部署? 尽管大多数应用程序都在迁移到云中,但并非所有组织都希望所有内容都基于云。

该软件是否具有良好的分支和合并支持? 开发人员可能希望快速创建其代码的分支,进行更改,对其进行测试,然后将其合并回到主源代码树中。

如何解决合并冲突? Forrester的Hammond说,如果开发人员更改了一堆代码文件,并且其中一些与另一个开发人员进行的更改发生冲突,则第一个开发人员将要比较这些更改并解决冲突。 这可能需要第一个开发人员逐行检查不同版本的代码,以了解需要接受的内容。

是否支持离线使用或克隆存储库? Hammond说,开发人员无法假设他们将始终连接到公司的网络或Internet。 有人在火车或飞机上旅行时,可能想在断开连接的同时复制一份代码以继续工作。 该工作人员可能还想通过克隆存储库以将项目转到另一个方向来创建项目的完整新副本。

[ 通过InfoWorld Daily新闻通讯了解软件开发,云计算,数据分析和机器学习方面的最新发展 ]

另一个可能的功能是变更审核工作流。 在大型项目中,架构师或项目经理可能需要查看开发人员要求的更改。 Hammond说,使工作流程尽可能无缝是很重要的,因为每天都会发生很多变化,尤其是在大型项目上。

然后,具有大量开发操作所需的集成功能。 这包括与其他开发和开发工具的集成,例如问题跟踪系统和测试自动化工具。

Murphy说,没有任何开发工具可以孤立存在。 他们需要与开发操作的其他部分连接或集成,并且需要开发人员社区的支持。 他说:“在这个市场上,使用哪种工具的主要决定是由使用工具的人做出的。”

最后,与IT和开发运营的任何其他方面一样,安全性不应成为事后考虑。 有哪些访问控制? 谁有权访问源代码以及对该代码执行的操作? 安全功能可能包括数据加密,两因素身份验证和密码保护。

考虑到现代软件开发的复杂性以及执行它的团队,很容易看到正确类型的版本控制软件可以提供的优势。 花时间选择正确产品的组织将看到它减轻了困扰其开发团队的一些常见问题。

From: https://www.infoworld.com/article/3391203/version-control-track-the-who-what-and-when-of-software-changes.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值