git保存账号密码_Altium Designer 通过Git实现版本控制

为了解决每次对PCB工程进行修改时不能回溯的问题,以及为日后团队协作完成某项工程提供方便,所以我研究了一下如何在AD中实现版本控制。

所幸的是,AD本身自带VCS功能(Version Control System),并支持SVN和Git两种VCS方式

前提条件:

安装Git的桌面版本,如Github Desktop

安装Altium Designer 20(目前已知16以后的版本都可以支持VCS功能,但16的使用遇到了一些问题)

在Github上建立Repository

在Github上建立Project相应的Repository,先不要勾选生成README.md,这里以我的项目LLRF为例

ba6bd660f0721998d6c217a00f15d207.png

之后在GitHub的桌面客户端上选择将LLRF这个库Clone到电脑的指定路径

9e062a57bf0d1d611289b8b9f28d5bb2.png

添加已有的项目到LLRF中

如果已经有项目在电脑上了,可以将项目相关的文件移到本地仓库所在的文件夹,然后Commit一下,并push上去,也就是点击上方的Publish branch

59d2a45b065c1c9ceae2a00353da335d.png

至此,Project里面的内容就已经被push到GitHub对应的库中了

在Altium Designer中设置

在AD中导入GitHub上的库有两种方式,接下来一一介绍

直接导入

如果像之前已经把Project的相关文件导入到GitHub的库中,并且本地库和远程库已经同步完成,那么直接打开本地的Project即可,这时会看到Project中的文件右侧会有一个绿色的✔,即表示该文件已经同步到远程库了

cf1bf82eca030be4b5c7dbcd8804c35f.png

接着,我们可以尝试对Project中的文件做修改,如加入一些自己的libraries,可以看到,新加入的libraries边上是没有标记的,个人经验,libraries本身也是不支持push的

786c27b11fd38fa1286ca498e4ac50e0.png

我们保存一下Project,然后在文件列表中右键——Version Control——Commit Whole Project,并添加相应的Comment,然后点击Commit and Push即可

注意下面这种图中Project对应的PrjPcb这个文件边上有一个红色的⭕,这表示该文件已经被modified了,但是还没有commit和push

11fbac84bbb5666869e355a2f21ac44f.png

c4aabffc9b0922c9549137d910a9217f.png

第一次Commit时,可能会要求输入GitHub的账号密码,正常输入即可

b877f4eae8f12a308abbee1918cdab11.png

dbfdab139d8b75db3bf6bb0739806dd1.png

Push完成后,再去观察Projects列表就会发现,文件边上的标志又都变成了✔,同时打开桌面版的GitHub会发现,相应的Commit已经被Push成功了

cadc7cad1db3d1df38747cc00ef77988.png

值得一提的是,Altium Designer自带的VCS功能是能够和Git打通的,这也就省去了每次在AD中修改完还需要手动到Git中再Commit一次的步骤,直接在AD中Commit and Push即可。

在Altium Designer内clone

第二种方式是在Altium Designer中clone Git上的库到本地。首先,在AD界面的右上角点击⚙图标,打开Preference——Data Management——Design Repository——Connect to/Creat New——SVN,弹出如下界面,按照以下规则填写:

Method——如果使用的是GitHub,选择https,不同的情况不一样,主要看支持哪种,像码云就可以选择svn(svn是在Git之前就出现了的VCS工具,是一种商业软件,目前很多基于Git的公共库也支持svn,比如码云、GitHub等)

Server——git@github.com(如果使用了其他Git仓库就填写相应的域名,如国内的码云http://Gitee.com)

Server Port——保持Default不动

Repository Subfolder——填写/GitHub用户名/库名

User Name&Password——填写GitHub的用户名和密码

ba2e4f1f485d206790208431f03ea210.png

填写完以后可以点击Test按钮查看是不是能够ping通相应的Server,如果可以会弹出"Connection OK",但是注意这里只是说明能够连接Git所在的服务器(这里就是GitHub的服务器),不代表一定能读写相应的库

最后点击OK添加,然后返回AD的主界面,点击左上角的File——Check out,就可以看到如下的界面,选择trunk点击OK,就会出现Check out的进度表,如果使用的是GitHub可能要等一会。

Note:trunk和branches这两个文件夹值得注意。如果是想通过先添加Design Repository,然后将本地的Project添加到Design Repository中的方式来实现VCS的话(即添加库——projects列表文件右键选择Version Control——Add ....),本地的Project的所有文件需要放在Default Checkout Path的trunk或是branches文件夹下面,也就是本地版本的这两个文件夹。造成这种操作的原因可能是svn和Git的逻辑差异——Git的Commit是要Push到master分支下的,而svn的Commit则是要Push到trunk或branches下的。

78c6fbff1e35ea54f8018f9b56291c6d.png

acbf5d09ae58b05bebd83b7d0ebf4021.png

个人经验来讲,第二种办法相对要麻烦一些,因为svn和GitHub的逻辑差异,导致pull下来的Project往往被放在trunk文件夹下面,容易弄得很乱。

One more way

之前说到是介绍两种方法,但实际上还有第三种,这在第二种方法的Note中也提到了,即先建立一个Design Repository然后将本地的Project add到Version Control并Commit and Push上去,这种方法就不详细介绍了,主要是有可能造成很多不必要的问题

总体来讲,最推荐的还是在GitHub上创建库——通过Git GUI软件(如GitHub Desktop)将库Clone到本地——将Project建在或移植到本地库——Commit and Push,这种步骤相对比较流畅,而且除了点点鼠标也不需要太多功夫。

Think more

在搜索相关教程时,我发现,硬件工程师普遍还是用svn来做版本控制,一个现实原因是Altium Designer对于Git的支持确实很迷,官网的document上明明写了支持像使用svn一样使用Git,但还是会出现各种问题。也难怪一位外国老哥说到:stop thinking like a programmer guy, just use svn!毕竟Git在PCB版本控制上相比svn没有硬核的技术优势,支持程度还这么差...

但个人认为,使用Git来配合AD还是有其相应的优点的,毕竟svn使用人数相对较少,且商业化程度要高一些,所以价格也要贵一些,虽然可以自建svn server,但是成本还是不低的,还要实时担心server会崩掉。

最后讲一下AD版本控制的小优势:

  1. 可以随时溯源过去做的修改
  2. 方便团队协作,需要传输Project时,只要从公共的远程库Pull一下即可,避免来回传递zip压缩包
  3. AD对版本控制有很好的支持,可以直接对比不同版本之间的原理图和PCB的具体区别

参考资料

记PCB 版本控制 (amobbs.com 阿莫电子论坛)​www.amobbs.com[简单易学]使用Altium Designer的版本控制功能​blog.csdn.net
b3e99e4872d75ce800d6fc1ea7eb1d65.png
Data Management - Design Repositories​www.altium.com
e390ef9782729b1578fdf627d58fc5fc.png
Git教程​www.liaoxuefeng.com
0e8fe5618888da36ee39c6a588284cdb.png
Version Control and Design Repositories​www.altium.com
729505e36c3486b095bf68a2b2e670f1.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/504969.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机字体原理,字体图标生成原理(1)

浏览器根据font-family解析渲染为不同图形的过程:1:读取文字内容转换成对应的 unicode码()计算机操作系统里面每个字符都有一个unicode编码,比如我们在web上输入\u6211跟输入“我”是一样的,因为「我」的unicode是\u6211(16进制)&#xff0…

asp 取菜单的名字_这样的奶茶店菜单设计,店面营业额能提高30%!

菜单是顾客了解奶茶店饮品品类、满足期待的一个载体,起着向顾客传递产品信息结构、激起购买欲望的重要作用。那么到底该怎么设计菜单才能吸引顾客呢?一、菜单风格要与品牌相符奶茶店的菜单设计风格一定要与品牌定位保持一致,着重突出店铺的风…

python ui自动化测试框架_Python自动化测试框架

PythonunittestrequestsHTMLTestRunner框架1 目录说明common:公共文档,存放包含HTMLTestRunner.py,logUtils.py等公用文件data:数据文档,存放测试数据;接口数据使用excel存储log:存放日志文件re…

计算机键盘怎么换键,笔记本电脑如何切换键盘_笔记本切换键盘的步骤-win7之家...

键盘是我们使用电脑必不可少的输入设备,在使用过程中,有时候需要进行键盘切换,比如数字和字母之间的切换,台式电脑切换比较简单,因为它字母跟数字键盘会分开,但是如果是笔记本电脑的话,要如何切…

geojson地图_Geojson地图pandas数据帧

geojson数据结构geojson作图方法geojson与pandashttps://blog.exploratory.io/visualizing-geospatial-data-with-your-own-geojson-f96dde0f6296​blog.exploratory.io数据结构GeoJSON是用于表示地理对象的格式。 它与常规JSON不同,因为它支持几何类型,…

views 多个文件夹 netcore_.NET Core 分发打包

由于 .NET Core 现已可用于更多平台,因此了解如何为其打包、命名并进行版本控制将很有用。 这样,无论用户选择在哪里运行 .NET,包维护人员均可以帮助确保获得一致的体验。 本文对以下用户非常有用:尝试从源生成 .NET Core。想要更…

dz论坛服务器技术支持,服务器更换 升级 dz论坛首页 dz其他页面打开为空白解决方法...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼1.症状:安装后一切正常,昨天发完nnn个帖子后突然论坛首页打开后空白2.解决办法:删除以下两个文件夹下所有文件forumdata/cache 和 /forumdata/templates3. 之后出现提示:Cache List: …

erlang安装_消息中间件(八)- RabbitMQ - 安装

步骤1:erlang步骤2:erlang 安装程序步骤3:配置路径步骤4:运行测试步骤5:安装 rabbitMQ步骤6:配置插件步骤7:重启 rabbitmq步骤8:管理员身份步骤9:重启 rabbitmq步骤10:访问管理界面步骤11:管理界面步骤 1 : erlangrabbitMQ 是基于 erlang 语言开发的,就如同 activem…

ihtml2document能不能根据id获取dom_使用DOM进行XML文件的解析

1. 什么是XML?xml是格式化的纯文本,用于存储数据和格式。2. DOM是什么?DOM是xml的一种解析方法(此外还包括SAX等,此处不提),它将xml文件抽象成为一个树型结构,这棵树个各个树叶就是节…

青茶什么时候拆_为什么日本绿茶那么绿?比中国的高级绿茶还要绿

我们经常可以从电影、电视、动画片、日式抹茶看到日本绿茶所呈现出来的样子,绿的,鲜脆欲滴的绿。到了日本,待客之道泡煎茶,可以更直观的看到煎茶的绿,这种绿是我们在国内不曾见到的绿,中国的高级绿茶也呈现…

单台web服务器性能,单台web服务器如何尽可能的提高网站性能

我觉得首先要选择一个合适的环境,对于大多数php站点来说,运行在lnmp(linuxnginxmysqlphp)环境下是个理想的选择.首先一点linux对比win的优势我就不说了。其次nginx的优势总结起来就是负载均衡,高并发性能优异。这里php采用fastcgi的方式接入n…

如何将dataset中的值赋值给datatable_金融行业实战项目:如何理解业务?

【面试题】下表是某金融App的数据,请结合Excel数据集中的数据完成下列问题(某金融公司面试题,文末有数据下载 )原始数据如下所示:为方便后期分析,我们对数据进行分类。数据通常分为3类:用户数据、行为数据、产品数据。…

python换循环颜色_python – 增加matplotlib颜色循环

你可以打电话ax2._get_lines.get_next_color()在彩色上推进彩色循环仪.不幸的是,这会访问私有属性._get_lines,因此这不是官方公共API的一部分,并且不能保证在未来版本的matplotlib中工作.一种更安全但不太直接的推进色彩循环器的方法是绘制零图:ax2.plot([], [])im…

css练习题4,复习webpack4之CSS文件代码分割

之前学习过webpack3的知识,但是webpack4升级后还是有很多变动的,所以这次重新整理一下webpack4的知识点,方便以后复习。这次学习webpack4不仅仅要会配置,记住核心API,最好还要理解一下webpack更深层次的知识&#xff0…

minhash算法检索相似文本_基于向量的深层语义相似文本召回?你需要bert和faiss...

在文章大话知识图谱--聊聊智能客服中,我介绍了智能客服系统利用FAQ问答库做自动问答,也就是基于信息检索的自动问答系统。它的一般做法流程是:构建一个大型的FAQ问答库,形式是(question,answer)…

vuex的命名空间有哪些_Python3 命名空间和作用域

命名空间先看看官方文档的一段话:A namespace is a mapping from names to objects.Most namespaces are currently implemented as Python dictionaries。命名空间(Namespace)是从名称到对象的映射,大部分的命名空间都是通过 Python 字典来实现的。命名…

ajax实现翻书效果,jQuery实现手机版页面翻页效果的简单实例

var page 1;var size 6;var mark 0;var url "{pigcms{:U(Order/index, array(page>d%))}";var commentTpl \去评价\;var template \""))}">\\{store_name}\\\\""))}">\\ \\{create_time}\总价:¥…

yolo极大抑制_pytorch实现yolov3(4) 非极大值抑制nms

在上一篇里我们实现了forward函数.得到了prediction.此时预测出了特别多的box以及各种class probability,现在我们要从中过滤出我们最终的预测box.理解了yolov3的输出的格式及每一个位置的含义,并不难理解源码.我在阅读源码的过程中主要的困难在于对pytorch不熟悉,所以在这篇文…

抽象类可以生成自己的对象吗_大理石可以自己抛光吗?大理石自己抛光方法解答...

大理石可以自己抛光吗?大理石自己抛光方法解答。大理石只有经过抛光后,表面才会有更好的光泽和质感。具体抛光可以要求大理石抛光团队施工,也可以自己做。那么大理石自己抛光方法是什么呢?下面石大夫为您解答。大理石自己抛光方法…

ajax 参数带百分号,Ajax请求中带有IPv6地址后的百分号的问题

IPv6地址后的百分号:对于连入网络但没有IPv6路由器或DHCPv6服务器的IPv6客户端,它们始终使用fe80::/64链路本地网络地址。如果运行Windows的计算机中有多个网络适配器连接到不同的网段,可以在IP地址后加百分号和区域ID数字来区分不同的网络,如…