微软 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/

优秀的个人博客,低调大师

微信关注我们

原文链接:https://www.oschina.net/news/355211

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。