Sysmac Studio使用Tortoise和Git实现版本控制
Sysmac Studio使用Tortoise和Git实现版本控制
实验时间:2022/11/16
实验软件:Sysmac Studio(1.52,需要软件授权支持版本控制)、Git(2.38.1)、Tortoise(2.13.0)、gitee(代码仓库)
实验目的:Sysmac Studio实现版本控制、多人同时开发(需要有Git和tortoris使用基础)
实验内容
本次实验模拟的是两个开发人员同时开发一个项目的两个功能,最终合并到一起进行调试,调试完成后发布。Sysmac Studio除了程序部分,对于两个开发人员来说都是公共部分,比如配置和设置下面的所有项、功能、功能块、数据等。这些公共部分如果两个开发人员都在自己的项目中单独修改,这个在之后项目合并时会出现很多的冲突。为了解决这个问题给两个开发人员建一个公共的分支用于修改公共参数,然后将这些公共参数合并到自己的项目中。
分支策略
策略介绍:
第一步:首先由项目负责人创建本地仓库建立master分支、developer分支,在developer下建立common分支,再在Git创建远程仓库,并将本地仓库的每个分支推送到远程仓库;
第二步:由开发者1将远程仓库的developer分支克隆到本地仓库,然后建立dev1和common1分支,本地仓库的common1分支在修改之前需要先从远程仓库的common分支先拉取,再修改,修改之后合并到dev1分支,再推送远程仓库的common分支。这样可以放置不同开发者在使用共参数出现不同步的问题;开发者2同样的操作;
第三步:在开发者功能全部开发完毕后将项目合并到developer分支上;
第四步:developer建立release分支用于测试项目,在bug处理完之后将项目合并到master分支和developer分支;
第五步:如果项目在最终使用是出现bug,可以再master分支上创建临时分支hotfix用于修改bug,修改完之后将项目再合并到master分支和developer分支,然后删除hotfix分支即可;
分支功能:
master:主分支,用于最终版本的发布;
developer:开发分支,用于合并开发者的项目,通常由项目负责人管理;
dev1:开发者1分支,用于开发者开发自己负责的功能;
dev2:开发者2分支,用于开发者开发自己负责的功能;
common1:开发者1公共参数分支;
common2:开发者2公共参数分支;
common:公共参数分支,用于每个开发者修改公共参数(修改之前要先拉取),最后将这部分参数合并到自己的项目中;
hotfix:用于修正master中发现的bug,修正完推送至master和developer分支;
release:用于测试developer中的项目,修改测试中的bug,最终推送至master和developer分支
分支策略图:

Git和Tortorisean安装和设置
1. 安装Git和Tortorise
git下载网址:https://git-scm.com/
Tortoise下载网址:https://tortoisegit.org/
在安装git时需要注意如下选项:

2. Tortorise设置:


External Programm格式:(Sysmac Studio安装路径)\SysmacDiff.exe -gitdiff %base %mine %bpath%brev %yrev
案例演示
分支策略中的五步具体操作如下:
准备工作
1. 先在SysmacStudio中创建项目命名为test_project,然后在该项目中增加两个开发者所需要的程序,然后将程序调添加到任务:

2. 在VC目录下创建文件夹my_test文件夹,再在该文件夹下创建一个notice.txt文件(随便建个什么文件都行)用于master分支的首次提交:

3. 在Gitee新建远程仓库MyTest如下:

第一步
- 初始化本地仓库、提交、推送至远程仓库的master分支:





-
创建并切换到developer分支:




-
将之前创建my_project项目导入到developer分支,提交并推送至远程仓库的developer分支(推送方法同上):

-
在developer分支下创建common分支用于修改公共参数部分,将common分支推送远程仓库(新建分支和推送分支方法同上,往后的该步骤不再截图)
第二步
- 开发人员1 在自己电脑的VC目录下创建一个dev1文件夹,克隆远程仓库的developer分支到本地dev1文件夹下:

-
在developere分支下创建dev1和common1两个分支,切换到common1分支,先从远程仓库的common分支拉取>,确保各个开发人员公共参数是一致的,防止在合并时出现冲突:

-
,打开工程在EtherCat下增加一个伺服、新建一个轴、创建结构体、新建全局变量:



-
common1提交修改,推送到远程仓库的common分支;
-
切换到dev1分支将common1分支合并至dev1分支:
-
查看合并后的dev1开发分支:
-
开发人员1在dev1分支下写自己的程序:




-
开发人员1的功能完成后提交修改开发者2的操作同上。
第三步
-
开发者1切换到本地仓库的developer分支,先拉取远程仓库的developer分支,将本地仓库的developer分支和dev1分支合并,然后将本地仓库的developer分支推送到远程仓库的developer分支。到此开发人员1的所有工作就完成了。
-
开发者2切换到本地仓库的developer分支,先拉取远程仓库的developer分支,将本地仓库的developer分支和dev2分支合并,然后再将本地仓库的developer分支推送到远程仓库的developer分支。
第四步
测试人员拉取远程仓库的developer分支,创建release分支后切换到该分支开始测试,如果发现错误修改后与本地仓库的developer分支合并,再分别推送到远程仓库的developer分支和master分支。
第五步
项目交付后如果出现bug,先在master分支上建一个临时修复分支hotfix,修复完后合并到master分支,然后删除hotfix分支。
扩展
创建标签
# Tag和Branch的原理是差不多的
git tag -a 版本标签 -m '说明信息'
git push origin 版本标签
拉取远程仓库的master分支,打开git bash:

将tag推送到远程仓库:
远程仓库查看推送的tag:


合并冲突处理
如果两个分支在合并时同样的文件在同样位置内容是不一样的,这时会产生冲突,需要手动处理冲突(详细参考手册)。在合并时尽量避免这种情况的发生。


sysmac studio版本控制用户手册:点击打开
相关文章:
Sysmac Studio使用Tortoise和Git实现版本控制
Sysmac Studio使用Tortoise和Git实现版本控制实验时间:2022/11/16 实验软件:Sysmac Studio(1.52,需要软件授权支持版本控制)、Git(2.38.1)、Tortoise(2.13.0)、gitee(代码仓库) 实验目的:Sysmac Studio实现版本控制、多人同时开…...
Intent 和 Bundle 传值的区别
文章目录1、使用上1.1 Intent 方式1.2 Bundle 方式2、为什么 Bundle 使用 ArrayMap 而不是 Hashmap 实现呢?1、使用上 1.1 Intent 方式 举例:将数据从页面 A 传递到 B,然后再传递到 CA 页面: Intent intentnew Intent(MainActi…...
TypeScript 初步
一、TypeScript是什么? Typed JavaScript at Any Scale: 添加了类型系统的JavaScript,使用于任何规模的项目。 两个重要特点: 类型系统 任何规模 中文官网:文档简介 TypeScript中文网 TypeScript——JavaScript的超集 TypeS…...
leaflet 添加zoomslider,控制zoom放大缩小(074)
第074个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中使用zoomslider,相比于普通的zoom控件,这个更加形象,更加具体些。 直接复制下面的 vue+leaflet源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共65行)相关API参考:专栏目…...
10分钟学会python对接【OpenAI API篇】
今天学习 OpenAI API,你将能够访问 OpenAI 的强大模型,例如用于自然语言的 GPT-3、用于将自然语言翻译为代码的 Codex 以及用于创建和编辑原始图像的 DALL-E。 首先获取生成 API 密钥 在我们开始使用 OpenAI API 之前,我们需要登录我们的 Op…...
2023美赛必须注意事项
文章目录首页部分要求竞赛期间题目查看题目下载论文要求比赛提示控制号提交解决方案更多注意事项首页部分要求 具体如下: 我提取一些关键词如下: 第一页:摘要页字体要求:12点的 Times New Roman 字体请勿在此页面或任何页面上…...
基于微信小程序的智能招聘小程序
文末联系获取源码 开发语言:Java 框架:ssm JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7/8.0 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.9 浏览器…...
Java文件操作和I/O
Java 流(Stream)、文件(File)和IOJava.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。一个流可以理解为一个数据的序列。输入流表示从一个源…...
QT项目_RPC(进程间通讯)
QT项目_RPC(进程间通讯) 前言: 两个进程间通信、或是说两个应用程序之间通讯。实际情况是在QT开发的一个项目中,里面包含两个子程序,子程序有单独的界面和应用逻辑,这两个子程序跑起来之后需要一些数据的交互,例如&…...
移动硬盘文件丢失怎么恢复?
在我们的日常工作、学习和生活都离不开各种数据。每天都会接收或处理各种数据,尤其是做设计、自媒体、多媒体设计的人。移动硬盘成为我们常备的存储工具,但有使用就会伴随着意外情况的发生,这将导致移动硬盘上数据的丢失,比如误删…...
什么是同步整流和异步整流
在设计降压型DCDC电路的时候,经常会听到同步整流(synchronous)和异步整流(asynchronous)。那么什么是同步整流,什么是异步整流呢从这两种电路的拓扑来看,异步整流型外围有一个续流二极管&#x…...
关于PYTHON Enclosing 的一个小问题
问题分析 以下是一段每隔半小时重复执行测试用例的脚本,func是传入的测试函数,在执行func前后,会打印操作次数 def repeat(func, action):try:log.info(u******开始并发%s****** % action)thread_list []for i in range(repeat_count):def…...
LabVIEW错误-2147220623:最大内存块属性不存在
LabVIEW错误-2147220623:最大内存块属性不存在在使用NI Linux实时操作系统目标中,使用系统属性节点和分布式系统管理器(DSM),但遇到一些问题:它未正确报告系统上的可用物理内存量。在NI Linux实时系统上出现…...
图的总复习
一、图的定义Graph 图是由顶点vertex集合及顶点间关系集合组成的一种数据结构: 顶点的集合 和 边的集合 二、无向图 用(x,y)表示两个顶点x和y之间的一条边(edge) 边是无方向的 N{V,E},V{0…...
测试流程记录
1,需求评审 2,技术方案评审 3,编写测试用例 编写需求分析 编写测试用例 编写冒烟case 4,用例评审 5,提测 提测前给开发执行冒烟case 6,测试 测试完成前约产品验收时间 7,验收 跟进验收问题…...
Mysql主从架构与实例
mysql的主从架构 MySQL主从架构是一种常见的数据库高可用性解决方案,它通常由一个主数据库和多个从数据库组成。主数据库用于处理写入请求和读取请求,从数据库则用于处理只读请求。 在主从架构中,主数据库记录所有数据更改并将这些更改同步…...
webpack(高级)--Tapable
webpack 我们直到webpack中有两个非常重要的类Compiler和Compilation 他们通过注入插件的方式 来监听webpack的所有声明周期 插件的注入是通过创建Tapable库中的各种Hook的实例来得到 Tapable Tapable中的Hook分为同步与异步 同步 SyncHook SyncBailHook SyncWaterfallHook…...
Python常见类型转换合集
近期在工作中常常接触到各种转换,如字符串转byte,byte转字符串,还有byte数组转成报文能接纳的格式(bin格式的十六进制)。故有必要系统的总结一下Python中常见的类型转换。 一:常见类型的概念 类型举例说明…...
知识点(1)
什么是跨域请求? 当前发起请求的域与该请求指向的资源所在的域不一样,凡是发送请求的url的协议、域名、端口号三者之间任意一者与当前页面地址不同的请求。这里的域指的是:我们认为若协议域名端口号均相同,那么就是同域。 get和…...
Tomcat源码分析-启动分析(三) Catalina启动
在上一篇文章中,我们分析了tomcat的初始化过程,是由Bootstrap反射调用Catalina的load方法完成tomcat的初始化,包括server.xml的解析、实例化各大组件、初始化组件等逻辑。那么tomcat又是如何启动webapp应用,又是如何加载应用程序的…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...
ui框架-文件列表展示
ui框架-文件列表展示 介绍 UI框架的文件列表展示组件,可以展示文件夹,支持列表展示和图标展示模式。组件提供了丰富的功能和可配置选项,适用于文件管理、文件上传等场景。 功能特性 支持列表模式和网格模式的切换展示支持文件和文件夹的层…...
[USACO23FEB] Bakery S
题目描述 Bessie 开了一家面包店! 在她的面包店里,Bessie 有一个烤箱,可以在 t C t_C tC 的时间内生产一块饼干或在 t M t_M tM 单位时间内生产一块松糕。 ( 1 ≤ t C , t M ≤ 10 9 ) (1 \le t_C,t_M \le 10^9) (1≤tC,tM≤109)。由于空间…...
