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应用,又是如何加载应用程序的…...
程序员必备的软技能-金字塔原理拆解
前言 日常工作中,常常因为思维、表达方式不对产生不想要的结果: 写了一个小时的周报,领导却不满意?跟团队讲了半天自己的想法,可别人就是没理解?看了很多知识、信息,却一点也没记住࿱…...
基金详细介绍
投资回报率 利润 / 投资总额(第一次投资回报率 5%) 关注南方理财 60 天债券 B(202306)万元收益 50—60 元 购基七步曲: 风险测试基本知识交易指南查看业绩了解评级在线下单赎回 基金类型: 积极成长型基金…...
媒体邀约之企业如何加强品牌的宣传力度
传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。胡老师分享了许多媒体传播方面的经验,今天就跟大家分享下我对企业宣传方面的看法。企业如何加强品牌的宣传力度:1,网络宣传在社交媒体上建立企业账户&am…...
【SpringBoot】75、SpringBoot中使用spring-retry轻松解决重试
在日常开发过程中,难免会与第三方接口发生交互,例如:短信发送、远程服务调用、争抢锁等场景,当正常调用发生异常时,例如:网络抖动,这些间歇性的异常在一段时候之后会自行恢复,程序为…...
网络工程师必知的几个问题
路由器问题: 1、什么时候使用多路由协议? 当两种不同的路由协议要交换路由信息时,就要用到多路由协议。当然,路由再分配也可以交换路由信息。下列情况不必使用多路由协议: 从老版本的内部网关协议( interi…...
【仓库管理】搭建 Maven 私服之一--Nexus仓库(Repository)管理软件
文章目录Nexus是什么Nexus下载和安装1. 进入 Nexus 2.x 下载页面,根据本机操作系统,选择对应的版本进行下载,如下图所示。2. 将下载 Nexus 安装包解压到本地磁盘,可获得 nexus-2.14.20-02 和 sonatype-work 2 个目录,如…...
凹凸贴图(Bump Mapping)
凹凸贴图是什么? 我们首先来看low-poly(多边形数较少)mesh和high-poly(多边形数量较多)mesh之间的不同。首先,最明显的不同就是high-poly能够表现出更多细节,但high-poly有比较大的性能开销。有…...
文华财经期货指标公式量化策略分析软件,多空共振信号准确率高的公式源码
期货指标公式信号本身就有滞后性,周期越大,滞后性越久。指标公式不是100%稳赚的工具,只是在合适的时候让我们理性看待行情,减少逆势操作。 多空量化三维系统是一款通过数学分析、挖掘价格运动规律,对历史价格走势、趋势…...
基于TCP协议的文件传输系统
最简单的一对一的服务端网络端通信(socket) Socket(IP地址:端口号),例如:如果IP地址是210.37.145.1,而端口号是23,那么得到套接字就是(210.37.145.1:23) socket可以理解成计算机提供给程序员的接…...
Linux定时备份MySql数据库
一、创建文件 cd / mkdir mysqlbackup vi mysqlbackup.sh然后将下面的代码更改后复制上去即可。 #!/bin/bash mysqldump -uroot -ppassword database > /mysqlbackup/database__$(date %Y%m%d_%H%M%S).sqlpassword指的是MySql的密码,database指的是所要备份的…...
桂林象鼻山门票/深圳优化公司哪家好
“Gotham” by James Gilleard♚作者:Nugine专栏地址:zhuanlan.zhihu.com/c_168195059在本篇文章中,我要向你展示使用 Cython 扩展 Python 的技巧。如果你同时有 C/C和 Python 的编码能力,我相信你会喜欢这个的。我们要造的轮子是…...
东莞新闻营销/宁波seo网络推广公司排名
一、块元素 block element 块元素的特性 独霸一行,总是在新行上开始宽度缺省是它父级元素的100%,除非设定一个宽度高度、行高、外边距、内边距都可以设置可以容纳其他内联元素或者其他块元素 常见的块元素 address – 地址blockquote – 块引用cente…...
厦门注册公司流程/苏州seo关键词排名
马上就要到中秋节了,提前祝大家中秋节快乐,最近比较忙,考虑到粉丝一直要求我更新文章,我今天就加班更新一下文章。实时数仓如何做数据分层我不喜欢搞什么花里胡哨的词汇,让粉丝听着挠头,我就想用大白话分享…...
品牌手机网站开发/seo服务收费
import matplotlib.pyplot as plt from PIL import Imageroot r"G:\01.jpg"plt.imshow(Image.open(root))ax plt.gca() # 默认框的颜色是黑色,第一个参数是左上角的点坐标 # 第二个参数是宽,第三个参数是长 ax.add_patch(plt.Rectangle((100…...
做网站要学/热门网站排名
在Java 8中,我们可以在Optional和Stream经常看到map()和flatMap()这两个方法,这两个方法是针对函数式特性引入的,两者功能上看似相近,但其实还是有很大区别的。让我们来了解一下吧。Optional中的比较我们会经常在Optional中使用到…...
wordpress 4.8.3/微博推广方案
什么是负载均衡 负载均衡就是将用户请求(流量)通过一定的策略,分摊在多个服务实例上执行,它是系统处理高并发、缓解网络压力和进行服务端扩容的重要手段之一。它分为服务端负载均衡和客户端负载均衡。 服务器端负载均衡 Nginx属…...