跳到主要内容

什么是版本控制系统?

硬件版本控制

有没有想过软件开发团队如何管理复杂的代码库而不重叠彼此的工作?如果他们搞砸了,他们如何将更改回滚到代码库的早期版本?答案是版本控制系统。软件团队使用这些系统来跟踪代码库更改,回滚或向前版本,并将多个开发人员的更改合并到单个版本中。

大多数硬件工程师都不知道,他们还可以利用版本控制系统来帮助他们跟踪项目进度,并为制造创建正式版本。过去的版本控制系统是通过控制台来调用的,但是现在硬件工程师使用的现代版本控制系统将在设计工具的后台运行。如果您从未使用过版本控制系统,我们创建了这个基本指南来帮助您入门并理解版本控制中使用的一些核心定义。

版本控制系统概述

顾名思义,所有版本控制系统都执行一些跟踪和维护项目每个版本的功能。版本控制系统执行一些关键功能,下表总结了这些功能。本文后面的部分将更详细地提供这些操作。

修正跟踪

对项目及其文件的每一组更改都将被跟踪。向版本控制提交更改的用户也会被跟踪。

回滚和前滚

开发团队可以根据需要在修订之间切换,例如在当前修订中发现错误时。

分叉和克隆(分支)

一个项目的文件可以被分割成一个新的修订历史记录,或者它们可以被复制成一个完全不相关的版本历史记录。

比较和合并

当比较一个项目及其分支/克隆时,可以解决任何冲突,并合并两个版本。

把请求

发出将分支项目拉入原始修订历史的请求。

提交

从版本控制系统打开项目后,对项目的任何更改都将放入版本控制中。

解决冲突

在拉取请求期间,或者提交更改时,可能会有需要解决的冲突。

版本控制系统最初是贝尔实验室在开发UNIX时发明的。今天,它们在……无处不在数据管理系统它们是跟踪项目发布的重要管理工具。在硬件领域,这意味着设计团队可以跟踪每个设备版本之间,以及每个发布到生产之间的整个项目历史。

在版本控制系统中可以跟踪什么?

从技术上讲,项目中的任何数据都可以提交到版本控制系统,并且可以跟踪更改。特定于硬件的版本控制系统通常内置在CAD工具中,因此它们只能与本机CAD格式、生产文件以及作为CAD项目文件结构一部分接受的任何辅助文件一起工作。对于某些CAD工具,这可能是任何文件,而其他CAD软件只接受本地项目文件格式。

软件版本控制系统在历史上一直是独立的实用程序,如Git,可以通过控制台中的命令访问它们。它们也可以从项目管理系统内部访问,或者可以通过API与第三方版本控制系统集成。因为软件和固件开发人员没有自己的CAD工具版本,他们不受单一版本控制系统的限制,他们倾向于根据集成功能选择系统。

与版本控制合作

合作过程在版本控制系统中实现的概要如下图所示。考虑一个具有很长修订历史的项目,在本例中称为“Main Branch”。这个图形从项目修订历史中主分支的分支创建开始。下面的想法是将项目分叉(这个操作将在下面详细解释),但是这可以通过克隆来完成。

硬件版本控制

从现有的修订历史创建新分支之后,它可以经历自己的修改和测试过程。在此过程中,新分支中的更改可以保存到版本控制系统(提交更改),以便在需要时可以回滚更改。最终,当分支完成时,可以发出一个拉请求,以便团队可以检查在分支中实现的更改。一旦变更准备好接受,团队将需要比较新分支和主分支,然后变更可以合并到单个分支中。

版本控制重要操作

上表中列出的版本控制操作旨在促进开发人员组在项目中一起工作时的协作。通常情况下,开发人员将在项目的修订历史中使用相同的版本,或者他们可能使用分叉和克隆操作在不同的版本上工作。最终,上面列出的操作旨在确保有一个真实的来源项目的当前版本和数据

分叉和克隆

从一个项目创建一个新的分支涉及到两种可能的操作:分叉和克隆。这两项任务是任何版本控制系统的重要组成部分,因为它们定义了用户如何使用系统中的现有数据。这两种操作都涉及复制已提交给版本控制系统的数据。然而,这些操作在如何处理与项目修订历史的关系方面有所不同。

  • 分叉
  • 数据被复制并保留在版本控制系统中
  • 复制的数据携带与先前数据相同的修订历史
  • 克隆
  • 数据被复制并经常下载到用户的本地机器
  • 复制的数据不会一直链接到原始数据的修订历史

在使用版本控制时经常出现的下一个问题是:什么时候应该克隆,什么时候应该分叉。不幸的是,这个问题没有正确答案。设计人员和开发人员可以制定自己的策略,以确定何时进行数据分叉或克隆,这些策略可以由管理员进行监督。一些开发团队可能会决定即时分叉或克隆项目,以便在出现问题时解决问题。这更像是一种管理数据的方法,需要团队保持敏捷。

了解关于硬件设计中的分叉和克隆的更多信息。

把请求

解释拉请求最简单的方法是作为通知。从本质上讲,拉请求是开发人员用来让其他团队成员知道他们的更改已经完成并准备好进行检查的机制。pull请求在版本控制系统的GUI中发出,系统将向其他团队成员发送通知,以便他们了解更改。Pull请求应该只在分支被修改并且变更提交给版本控制时发出。通过这种方式,其他用户可以访问更改并与早期版本进行比较。

比较和合并,解决冲突

假设拉请求中概述的更改是可接受的,并且所有反馈都已实现,则可以将更改合并到主分支的早期版本中。侧分支中的更改通常会重叠或覆盖主分支中的数据,在将这些更改合并回主分支之前,需要对这些更改进行比较和接受。

对于代码,逐行或逐函数地将更改合并回主分支要简单得多。对于硬件来说,情况就大不相同了,用户可能会关注组件级或特性级,而不是单个原语中的PCB布局。版本控制系统中的用户界面可以使比较和合并过程更加容易。

版本控制比较和合并

当它基于图形用户界面时,比较和合并要容易得多。

硬件和固件开发人员需要版本控制

跨领域工作的硬件设计团队在开始与固件开发人员合作时,有时会有版本控制系统的初始经验。固件基本上是代码,就像软件一样,但它将部署在一块硬件上,因此固件开发人员必须与硬件系统设计人员一起工作,以确保一致性。在许多情况下,固件开发是前端工程师或PCB设计师,他们可能会带头管理项目数据。

实现版本控制系统的CAD工具使设计团队能够直接进行数据管理,而不需要系统管理员。在这种类型的系统中,提交、拉取请求、分叉和克隆都是可能的,但是在一个直观的用户界面中,不需要通过命令提示符进行操作。这也比通过第三方版本控制系统工作要容易得多,后者可能需要将数据传递到API(特别是在云中),或者第三方系统必须与您的CAD软件现有集成。

了解为什么您的团队可以从集成了版本控制系统的PCB设计应用程序中受益。

需要在复杂项目中协作的硬件设计团队和嵌入式开发人员可以使用完整的设计工具集Allegro PCB Designer以及来自数据管理工具节奏.Allegro是业内最好的PCB设计和分析软件,提供一系列产品设计功能,以及一整套管理和版本控制功能。Allegro用户可以访问一套完整的原理图捕获功能、PSpice中的混合信号模拟以及强大的CAD功能等等。

订阅我们的通讯获取最新信息。如果您想了解更多Cadence如何为您提供解决方案,和我们的专家团队谈谈吧