什么是
拉取请求
说到网络开发,拉取请求(通常缩写为 PR)就像是开发人员交流想法和变更的一种方式。在尝试提交对现有代码库的修改或增强时,这是一种合适的协议。
拉取请求的工作原理是让项目维护者在应用修改之前对修改建议进行审核;修改可以根据共识被批准或拒绝。新功能一经验证和接受,就会无缝集成到现有代码库中,不会造成中断。单个推送请求可以添加一行代码,也可以添加数百行代码,具体取决于提议的更新类型。
从鸟瞰的角度看,解决代码库中的冲突似乎很像混沌理论的复杂性;但如果从适当的角度看,它们就会变得比火箭科学更简单明了!巧妙地利用 Git 和 GitHub 等工具,每一次改动都会变得清晰明了,从而提高生产力和效率--真正实现了软件开发成功所需的真正 "拉动 "能力的承诺。在这里,我们完全有理由将 GitHub 与宇宙学相提并论:管理拉取请求所需的技巧无异于平衡天体元素--引力波与恒星旋转!
实例
拉取请求
- 通过拉取请求创建新特性或功能
- 使用拉取请求编辑代码片段
- 更新库、框架或文件,并通过 PR 提交变更
- 使用持续集成为每个拉动请求自动测试
- 多个开发人员在同一项目中协作编码,作为单个拉取请求的一部分
- 通过 PR 将不同版本的依赖关系合并为一个统一版本
- 通过一系列更小、更简洁的 Pull Request 提交来修复错误,确保代码质量
- 通过作为 PR 一部分创建的回归测试,确保在对现有应用程序进行多次更新时核心功能保持不变
- 在多个细化的小规模拉取请求中,使用大规模的重组和重新格式化,以尽可能最高效的方式重构代码
- 根据在不同批次的累积拉取请求中零散提交的微小功能增量,逐步构建复杂的设计
的好处
拉取请求
- 创建新功能:拉取请求是在现有代码库中引入新功能的最有效方法。通过将提议的变更提交到版本库,开发人员可以审查其范围和质量,同时随时关注集成过程中出现的任何意外错误或 bug。
- 集中团队间的协作:拉取请求为所有必要的利益相关者提供了一个中心点,使他们在审查来自多个来源的变更时可以在一个地方进行协作。无论团队成员身处何地,他们都可以在同一个资源库中远程讨论既定的实施标准,并解决可行性难题。
- 整合外部开发人员的贡献:对于拥有众多贡献者或开源计划的大型项目,拉取请求可以轻松地将数百个来自外部的独特贡献整合到一个版本控制系统中--允许外部人员访问贡献,而不会在他们的系统中产生兼容性问题或数据损坏问题。
甜蜜的事实与统计
- 拉取请求是开发人员协作编写代码的最有效方式。
- 超过 68% 的开发人员目前使用拉取请求作为软件开发流程的一部分。
- 每个拉取请求从开启到关闭的平均总时间约为 4 天。
- Github 报告称,仅在 2020 年,拉取请求就比 2019 年增加了 75%。
- 在涉及大量代码的情况下,对质量和安全标准有很高依赖性的公司可以使用自动代码审查,其准确率比人工审查流程高出 95%。
- 35-50%的工程团队使用某种由拉取请求本身触发的自动审批系统,或将其作为 DevOps/Gitflow 工作流中的一个集成步骤,在提高团队速度的同时确保质量控制措施得到满足,而不会妨碍工程师个人和利益相关者之间的协作努力水平。
- 2021 年 4 月,天文学家宣布,他们探测到了 10 亿光年外的黑洞系统合并产生的引力波--有证据表明,这些黑洞是在一次成功的构建与合并后汇聚在一起的,而且还成功地执行了 "拉取请求"!
的演变
拉取请求
自 2005 年左右推出以来,Pull request 已成为网络开发领域的一股革命性力量。在过去的二十年中,该工具从最初的草根开源努力,经历了一段令人难以置信的历程,从一个单纯的建议引擎发展成为应用程序开发生态系统中的一个完整俱乐部。
起初,开发人员采用拉取请求(Pull Request)主要是为了在自己的项目被上游开发人员接受之前提交修改建议、功能增强和错误修复。这种做法允许开发人员在批准/合并之前确保所提交的新代码没有错误或不完整。随着时间的推移,Pull Request 已不仅仅是一个在线审查工具,它很快就转变成了一个能够促进跨团队和跨组织知识共享的协作机器,让用户能够获得经验丰富的社区成员和其他开发人员的帮助,他们可以互相检查对方的工作是否准确和完整。
从早期开始,拉取请求流程就因引入漫长的辩论周期而声名狼藉,在这一过程中,相互冲突的意识形态动辄就会发生冲突,直到最终通过妥协得到解决--但所有这些都是在友好的范围内进行的!尽管拉取请求过程中出现了一些动荡(往往会导致相关方之间的激烈争论),但它在网络开发领域仍然受到高度重视,毕竟,将项目或代码库的控制权交给他人并非易事--这就是为什么在承担此类风险时,适当的保障措施和审查流程是必不可少的要素。