11.5.4 关于多人合作中的代码如何同步?

GreyZeng 2021-08-07 16:42:54

原文地址
书中11.5.4中提到了代码签入过程中的种种冲突问题,最后给出的解决方案是对不同的代码实行不同的规则和流程控制,并给出了例子。但是,我仍然没能看出来这样如何解决了问题。在我的开发实践中,我曾见过两位同学针对4个issue同时对代码进行修改,然后merge冲突,花费了很长时间,经历多次merge/rebase才成功合并。这还仅仅是两位同学,发现问题后一起合并的结果。在软件公司,一份代码同时修改的人相比更多,冲突也更多。我觉得即使如书中一样限定在一个固定的时间段签入代码,仍然会发生冲突。

我目前能想到的解决办法就是,将构建过程自动化,只允许能通过构建的代码签入。这样可以保证签入不会导致构建失败,可以省去“合并版本后构建并测试”的时间,减少冲突的可能性。但是这并没有解决代码冲突频繁的问题,且在项目工程庞大的情况下,自动构建和测试也要花费大量的算力和时间,因此希望与大家讨论。

...全文
602 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
GreyZeng 2022-03-27
  • 打赏
  • 举报
回复

Jetbrain的编辑器有Code With Me 的功能可以同步查看代码的更新
Visual Studio / Visual Studio Code 有Live Share功能可以同步查看代码的更新

GreyZeng 2021-08-07
  • 打赏
  • 举报
回复

这一点是我一开始的理解存在一定问题,规范的流程指严格规范向主分支的合并,如果不做这一点问题主分支上会产生无法通过构建的代码。而我接触的项目完全都是保证向主分支的合并修改具有原子性的。同时我个人强烈赞成此种做法,主分支上本就不应存在无法通过构建的Commit。

当然,这就属于严格流程控制的例子,会导致有人一直无法签入,这需要主管Merge的人手动控制,也可以通过VCS的相关功能(如Merge结果自动测试)来保证合并进度。针对书中果冻的邮件,就可以通过自动化测试来解决,同时手动提高他的合并优先级。

此外真实开发后发现,只要模块划分合理,不要有两个人同时工作在同一个文件上,每次先pull,就能有效避免冲突,使冲突只发生在部分容易解决的全局配置文件上。

最后,原文例子里可能是大家不会用git花的时间才那么多(

原文地址

Powerbuilder 9.0实用教程》源代码 1.本源代码包括以下章节源代码: 第01章 认识PowerBuilder 9.0、第05章 创建应用程序、第06章 创建窗体、第07章 创建菜单和工具栏、第10章 应用程序的调试和发布、第11章 典型小型实例赏析、第12章 图书管理系统实例和第13章 学生选课系统实例。 2.源代码使用方法参见《附录A 源代码的使用方法》文件。 __________________________________________________________________ 注意: 1.建议读者下载源文件后,将该源文件进行备份,读者使用副本源文件进行学习,这样一但出问题就不用再从网上下载了。 2.将源文件“数据库文件”文件夹一定要复制到C盘根目录下,这样才能保证您连接数据库文件成功,具体方法参见《附录A 源代码的使用方法》。 对于书代码除了数据库外其他都能正常使用,而示例数据库需要用户在自己的计算机上注册后才能使用,如果不注册数据源就运行应用程序是检索不到任何数据的,下面以连接学生选课系统数据库为例具体介绍如何连接数据库文件。 第1章 认识PowerBuilder 9.0 1 1.1 PowerBuilder 9.0简介 1 1.1.1 国软件业现状 1 1.1.2 为什么要学习PowerBuilder 9.0 2 1.1.3 PowerBuilder的概述 2 1.1.4 PowerBuilder的特点 3 1.1.5 PowerBuilder 9.0的新特性 6 1.2 安装PowerBuilder 9.0软硬件需求 9 1.2.1 软件环境需求 9 1.2.2 硬件环境需求 9 1.3 PowerBuilder 9.0功能界面介绍 10 1.3.1 PowerBuilder 9.0界面简介 10 1.3.2 常用功能菜单 10 1.4 工作环境设置 16 1.4.1 工具栏的设置 16 1.4.2 窗口排列 19 1.4.3 快捷键设置 20 1.4.4 系统选项设置 21 1.5 用5分钟制作一个简单实例 22 1.5.1 实例运行界面 22 1.5.2 新建一个工作空间对象 22 1.5.3 新建一个应用程序对象 23 1.5.4 创建窗体 23 1.5.5 为应用程序添加open事件代码 25 1.6 小结 27 1.7 习题 27 第2章 编程基础知识 28 2.1 PowerScript脚本语言书写规则 28 2.1.1 忽略大小写 28 2.1.2 语句的断行、续行和分割 28 2.1.3 注释 29 2.2 数据类型 29 2.3 变量和作用域 30 2.3.1 定义变量 30 2.3.2 引用变量 30 2.3.3 变量的作用域 30 2.4 操作符 31 2.5 标识符 32 2.5.1 标识符的构成 32 2.5.2 匈牙利命名法 32 2.6 常用代词 33 2.7 控制语句 34 2.7.1 判断语句 34 2.7.2 循环语句 36 2.8 结构 38 2.8.1 创建结构 38 2.8.2 使用结构 40 2.9 函数 40 2.9.1 Open()和Close()函数 41 2.9.2 MessageBox()函数 41 2.9.3 类型转换函数 41 2.9.4 类型判断函数 42 2.9.5 其他函数 42 2.10 ODBC数据源与专用数据库接口 43 2.10.1 什么是ODBC数据源 43 2.10.2 专用数据库接口 43 2.10.3 连接数据库 44 2.10.4 配置ODBC 48 2.11 SQL语言 49 2.11.1 SQL语言的格式 49 2.11.2 在PowerBuilder 9使用SQL语句 51 2.12 类和对象的概念 56 2.12.1 继承 57 2.12.2 重载和多态性 57 2.12.3 封装 57 2.12.4 属性、事件和函数 57 2.13 在PowerBuilder 9.0实现面向对象编程 58 2.13.1 创建对象 58 2.13.2 设置对象属性 59 2.13.3 编写事件代码 59 2.13.4 实现继承对象 60 2.14 用户对象和用户事件 61 2.14.1 用户对象分类 61 2.14.2 定义用户对象 62 2.14.3 使用用户对象 64 2.14.4 用户事件 66 2.15 小结 67 2.16 习题 68 第3章 创建数据库 69 3.1 数

606

社区成员

发帖
与我相关
我的任务
社区描述
程序员。写过:移山之道,编程之美,构建之法,智能之门。
软件工程软件构建团队开发 企业社区 北京·朝阳区
社区管理员
  • SoftwareTeacher
  • GreyZeng
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧