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应用,又是如何加载应用程序的…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...
python爬虫——气象数据爬取
一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...
Visual Studio Code 扩展
Visual Studio Code 扩展 change-case 大小写转换EmmyLua for VSCode 调试插件Bookmarks 书签 change-case 大小写转换 https://marketplace.visualstudio.com/items?itemNamewmaurer.change-case 选中单词后,命令 changeCase.commands 可预览转换效果 EmmyLua…...
