跳到主要内容

在版本控制中何时使用分叉与克隆

Alt Text: PCB版本控制

在工作流管理方面,PCB设计项目可能比软件项目更麻烦,因为今天的许多产品都有一个固件和/或软件组件。硬件设计数据和软件数据需要由经常异步工作的多个人员进行归档、跟踪和管理。项目管理应用、数据仓库、ERP / PLM系统,以及版本控制系统是管理整个设计、发布、制造和生命周期过程的重要工具。

设计团队使用版本控制系统,如Git或Tortoise,用于变更管理和工作流管理,包括硬件设计数据和嵌入式软件。版本控制系统对于跟踪设计数据的变化很有用,但是它们需要一个管理策略来决定何时应该使用某些特性。作为版本控制系统的一部分,设计人员最常使用的两个重要特性是分叉和克隆。我们将讨论在产品设计中何时应该使用这些特性,以及它们如何适应项目管理策略。

版本控制中的分叉与克隆

克隆和分叉是GitHub/Git用户最熟悉的两个数据管理过程。当设计数据存储在版本控制系统中时,可以使用分支和克隆过程访问、修改和跟踪包含数据的存储库。这些流程之间的高级差异如下所示。

分叉

  • 从现有存储库复制数据
  • 新数据与旧存储库链接并同步
  • 可以合并回原始存储库,但需要审查更改(拉取请求)

克隆

  • 还从现有存储库复制数据
  • 新数据位于本地或服务器端,但没有链接到现有存储库
  • 可以提交到现有的存储库,还是作为一个全新的存储库

分叉

在开源项目中,当设计人员或开发人员希望为代码库或设计数据库做出贡献时,通常会执行分叉。数据从最新版本的代码库复制,复制的数据完全由执行分叉的开发人员控制。然后,开发人员可以修改设计/代码库,然后这些更改可以提交以供审查并包含在主存储库中。在Git中,这被称为拉请求,它可能需要合并对原始代码库的更改,以确保合并来自最近提交的任何冲突更改。

在企业环境中,分支通常被视为设计数据库的服务器端副本,仅由执行分支的人控制。分叉的版本将具有与原始数据库相同的版本历史;恢复对一个分支的更改相当于对数据库的早期版本进行分支。

有很多原因让我们选择分叉一个项目而不是克隆它。

  • 简化团队与外部工程师或项目干系人之间的交互
  • 在不破坏工作设计的前提下,将团队的精力集中在实验性设计变更上
  • 设计师可以在限制外人进入的情况下完成自己的部分,这减少了噪音和潜在的合并冲突

如果您计划对设计进行实验,例如正在执行模拟,那么将设计分叉并稍后将其合并回原始存储库是有意义的。的

克隆

在Git中,克隆创建存储库的本地副本,类似于从版本控制服务器下载存储库到本地计算机。其他版本控制系统可能使用不同的术语,但总体思路是创建存储库的非链接、非同步副本。这个未链接的项目不会与版本控制同步,除非您告诉它这样做,在这种情况下,它将作为单独命名的存储库存在于服务器端。请注意,两个存储库(原始存储库和克隆存储库)可以具有完全相同的数据,并且只能在名称、访问权限和可见性方面有所不同。

克隆项目的一些原因包括:

  • 在旧设计的基础上创建一个全新的设计,例如,一个新的布局参考设计原理图
  • 需要进行本地编辑,而不是在服务器端完成所有工作
  • 用户可以对原始存储库进行写访问,不需要进行变更审查

一旦克隆的设计被修改,它可以提交回版本控制系统,但是项目将作为自己的存储库存在,具有完全独立的修订历史。克隆存储库之后,还可以将克隆的存储库作为开发过程的一部分进行分叉。然后可以将它合并回克隆存储库,克隆存储库再合并回主存储库。

使用这里概述的方法的硬件设计团队需要能够与版本控制系统集成的设计工具,作为工程数据管理策略的一部分。Allegro PCB Designer是业内最好的PCB设计与分析软件节奏可以提供这些管理功能以及更多功能。Allegro用户可以访问一套完整的原理图捕获功能,PSpice中的混合信号模拟,以及强大的CAD功能,等等。

订阅我们的时事通讯查看最新更新。如果你想了解更多关于Cadence如何为你提供解决方案的信息,和我们的专家团队谈谈