微软 Office 版本控制从 Source Depot 迁移到 Git 的经验和教训


曾参与 OneNote 开发的微软工程师 Daniel Sada 近日发文,介绍了微软 Office 团队将项目的版本控制系统从 Source Depot 迁移到 Git 的经历。

Source Depot 是微软早期基于 Perforce 开发的版本控制系统,随着 Windows 代码规模的扩大,它逐渐显现出诸多问题,如操作缓慢、分支切换困难、集中化导致网络问题时生产力停滞等,且维护成本高昂,员工也希望能掌握更具通用性的技能。

Office 团队面临着规模与复杂性挑战:Office 团队庞大,约有 4000 名工程师,且服务于不同客户群体,有 LTSC、半年度更新、月度更新、内部测试等不同更新节奏,此外其版本号构成复杂,需保证版本间的一致性及测试验证。

数百名微软工程师耗时数年终于将 Office 项目的版本控制从 Source Depot 迁移到了 Git。四千名工程师工作的 MS Office 办公软件项目切换到了 Git。

迁移过程

  • 第一阶段:建立“平行宇宙”:创建一个同步 Source Depot 和 Git 的桥梁,将 Source Depot 的分支层次结构映射到 Git 的 DAG 结构,同时保留提交者信息和时间戳,并确保反向整合和正向整合的一致性。初期尝试失败,经历了三次不同年份的尝试才成功建立稳定的同步服务。

  • 第二阶段:验证等效性:对两个代码库运行完整的测试套件,每天进行对比,花费数月时间解决语义差异、行尾处理、大小写敏感和测试输出不匹配等问题,直至实现所有测试在两种系统中完全相同通过。

迁移策略

  • 人员沟通与协作:采用“冠军”枢纽辐射模式,每个团队指定一名“冠军”作为联络人,在中心工程团队与各团队间建立桥梁,通过多种渠道反复传达信息,确保重要信息被充分接收。

  • 培训与技术支持:为开发者提供培训环境,模拟常见工作流程,创建视频库展示真实开发者解决问题的过程,帮助他们熟悉 Git 操作,消除对出错的担忧。

  • 回滚策略:制定明确的回滚策略,赋予领导“红色按钮”权力,可在迁移影响生产力时随时停止,以确保迁移过程可控。

原文:https://danielsada.tech/blog/carreer-part-7-how-office-moved-to-git-and-i-loved-devex/


相關推薦

2022-07-02

《Give Up GitHub: The Time Has Come!》的长文宣布,已停止使用微软的 GitHub,并呼吁所有 FOSS 开发者都离开该平台。SFC 主要是使用自托管的 Git 存储库,但使用了 GitHub 来镜像其存储库。 “我们将结束自己对 GitHub 的所有使用,并宣

2021-11-23

希望借助全球开发者的力量挽狂澜于既倒。彼时,它正与微软在浏览器市场激战正酣。微软攻势猛烈,将 IE 浏览器与 Windows 捆绑销售,并且免费提供,这使得曾经风靡全球的网景浏览器(Netscape Navigator)节节败退,尽管其市场

2022-11-04

,还可以通过安装扩展来获得更多语言和功能的支持。 微软于今天正式发布了 1.73 版本,更新内容如下: 从搜索中包括和排除文件夹 当在搜索视图的结果树状视图中右键单击一个文件夹时,现在在上下文菜单中有两个新的选

2022-08-20

微软最新的 Microsoft Edge 版本 104.0.1293.63 推出了全新的侧边栏功能, Microsoft Edge 边栏:Microsoft Edge 边栏让用户在浏览的窗口侧边访问 Microsoft Edge 的功能。可用的功能包括发现、必应搜索、Outlook、Office、游戏和工具,例如单位

2024-01-03

Mercurial 转移到 Git。 官方团队仍然认为Mercurial是更好的版本控制系统,命名分支模型和用户界面都优于其它选择,但foss.heptapod.net在google/bing/duckduckgo搜索中的索引并不完善,所以人们很难搜索到项目中的 issue。除此之外,还有

2023-06-29

,竞争和创新是相辅相成的。红帽、SUSE、Canonical、AWS和微软都创建了与之相关的Linux发行版,并进行了品牌推广和生态系统开发工作。这些变体都使用并贡献Linux源代码,但没有一个声称与其他发行版“完全兼容”。 最终,我

2023-03-18

微软宣布推出 Microsoft 365 Copilot,将大型语言模型 (LLM)(包括 Open AI 的 GPT-4)集成到 Microsoft 365 应用程序中。  微软董事长兼首席执行官 Satya Nadella 表示:“今天标志着我们与计算交互方式的演变迈出了重要的一步,这将

2023-10-12

微软宣布弃用 VBScript,并计划在未来的 Windows 版本中逐步淘汰该脚本语言。“VBScript 在从操作系统中移除之前,将作为按需功能提供。” 按需功能是 Windows 操作系统中的可选功能,如 .NET Framework(.NetFx3)、Hyper-V 和 Windows Subsyst

2022-06-10

以表格形式查看错误和警告,以快速过滤其来源。 在此版本中为用户添加了一项新功能,可以在 tree 和 table 之间切换问题面板的视图模式。与树状视图相比,表格显示了每个问题的来源(语言服务或扩展),允许用户按来源

2023-05-07

件旁加载到 Microsoft Word 中。 你可以在下面的链接中找到微软提供的说明:sideload office add-ins 打开你保存了 manifest.xml 文件的文件夹,例如 C:\\Users\\username\\Documents\\WordGPT. 右键点击文件夹打开菜单,选择 属性. 在 属性

2025-04-08

4 月 4 日,微软迎来了 50 周年生日。 为庆祝微软成立 50 周年,比尔盖茨发布了他与保罗艾伦合作开发的 Altair BASIC 源代码,他表示这是自己写过的“最酷的代码”,这也是微软起步时的象征——“在 Office、Windows 95、Xbox 或 AI

2023-06-10

件旁加载到 Microsoft Word 中。 你可以在下面的链接中找到微软提供的说明:sideload office add-ins 打开你保存了 manifest.xml 文件的文件夹,例如 C:\\Users\\username\\Documents\\WordGPT. 右键点击文件夹打开菜单,选择 属性. 在 属性

2023-06-19

件旁加载到 Microsoft Word 中。 你可以在下面的链接中找到微软提供的说明:sideload office add-ins 打开你保存了 manifest.xml 文件的文件夹,例如 C:\\Users\\username\\Documents\\WordGPT. 右键点击文件夹打开菜单,选择 属性. 在 属性

2023-03-08

微软宣布将于 3 月 16 日举行在线活动,名为“工作的未来:用 AI 重塑生产力”,主要内容是介绍其旗下的生产力工具(如办公套件等)与 AI 的融合状况。活动将于 2023 年 3 月 16 日早上 8 点(太平洋时间)开始,微软 CEO Satya Nad