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

GreyZeng 2021-08-07 16:42:54

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

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

...全文
527 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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花的时间才那么多(

原文地址

606

社区成员

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

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