写点什么

放弃 SVN,苹果 WebKit 迁移到 GitHub

  • 2022-09-02
    北京
  • 本文字数:1301 字

    阅读完需:约 4 分钟

放弃SVN,苹果WebKit迁移到GitHub

版本控制系统 (VCS),又叫修订控制或源控制系统,是一种软件实用程序,用于跟踪和管理对文件系统的更改。几乎所有软件的代码的备份、历史追踪、协同编辑等任务都需要版本控制系统完成。


从最早本地 VCS 系统 RCS、1990 年 CVS、2000 年 SVN(Subversion),到如今开源世界风头正健的 Git,同语言编辑工具一样,SVN、Git 都是程序员的必备利器。近些年,随着 GitHub 的流行,很多软件纷纷转向 Git。


8 月 31 日,苹果 WebKit 项目运营工程师 Jonathan Bedard 发布博文称,在今年 6 月 23 日,WebKit 项目冻结了 Subversion 树,迁移到托管在 GitHub 的 Git 源代码管理系统。


为什么选择 Git?


WebKit 原先使用 Apache 的源代码管理系统 SVN,这次之所以迁移,是因为 WebKit 社区意识到了 Git 分布式特性的重要性和其庞大的社区。


SVN 是集中式的系统,而 Git 的分布式特性使开发人员在项目协作方式方面更加灵活,允许多个组织协作。


“Git 的本地提交消息记录,以及 Git 日志将提交历史限制在存储库的某些部分的能力,意味着大型项目不再需要在每次提交时检查过时的 ChangeLog 文件,” Bedard 说。


而且,WebKit 项目的许多新贡献者更倾向于在 git-svn 镜像上工作,当涉及到现有的工具和工作流程时,这样的转换也被视为理所当然的。


Bedard 进一步表示,“选择托管在 GitHub 是因为它有庞大的 Web 开发者社区,WebKit 项目能与他们密切合作以改进引擎。我们还发现,GitHub 的 API 让我们只需对现有的基础设施进行相对较小的修改,就能建立起先进的预提交和后提交自动化,并提供一个现代且安全的平台来审查和提供有关新代码更改的反馈。”

迁移是好事吗


用户可能会发现苹果此举令人沮丧的是,Git 哈希值并不是自然排序的,所以 WebKit 团队决定在需要分叉的工作流程中使用他们所谓的“提交标识符(commit identifiers)”。WebKit 有一个“零容忍性能退步”政策,这意味着,能够轻松推理出存储库中的提交顺序是至关重要的。


许多开发者都在问为什么这样的迁移需要这么长时间,并不是所有的人都认为这是一个好主意。


“仅在今年,GitHub 就发生了 50 多次故障,而且在追索方面也有糟糕的历史,限制受美国贸易制裁国家的开发者。如果‘WebKit 项目对世界各地的开发者的贡献和反馈感兴趣’,那么切换到 GitHub 是没有意义的。”一位用户在 HackerNews 论坛上评论道。


还有人表示,即使最终项目发展会变成更顺利,但过渡到 Git 的过程也是场噩梦。


但也正如一位用户所说:“鉴于 GitHub 是一个被普遍理解的主机,而且它有人们喜欢的所有 UI/开发集成,所以使用它是有意义的。另外,拥有 GitHub 账户的人似乎越来越多,因此贡献者不必再创建另一个帐户来提供其他服务。”


Git 由 Linus 在 2005 年开发而来,演化至今已经成为了最流行和最先进的开源版本控制工具,不过仍然有很多的公司和团队还在使用 SVN 或者 CVS 对项目进行版本控制,部分公司确实有一些可能合理的原因来维持现状,但是使用 Git 在绝大多数的场景下确实能让我们的开发和合作变得更加高效。


参考链接:

https://webkit.org/blog/13140/webkit-on-github/

https://www.theregister.com/2022/09/01/webkit_migrates/

https://www.infoq.cn/article/ahoxlss6g153hod0y5iz

2022-09-02 15:5411021
用户头像
罗燕珊 InfoQ中文站编辑

发布了 460 篇内容, 共 290.4 次阅读, 收获喜欢 784 次。

关注

评论 2 条评论

发布
用户头像
Linus 才是这个世界上唯一会编写程序的人,其它人都是学习他。
2022-09-05 14:53 · 浙江
回复
用户头像
Linus 才是这个世界上唯一会编写程序的人,其它人都是学习他。
2022-09-05 07:23 · 广东
回复
没有更多了
发现更多内容

IOS技术分享| anyLive 开源项目

anyRTC开发者

ios 音视频 移动开发 视频直播 开源demo

java培训:MyBatis的架构与原理分析

@零度

mybatis JAVA开发

Web 键盘输入法应用开发指南 (3) —— 输入法事件

天择

JavaScript 键盘 输入法 3月月更

李凌:6 年,我如何从开源小白成为 Apache 顶级项目 PMC

腾源会

开源 腾源会

云原生网络利器--Cilium 总览

Daocloud 道客

ebpf cilium 云原生网络 容器网络方案

2022,你的团队距离持续部署还有多远?| 研发效能提升36计

阿里云云效

阿里云 云原生 持续部署 研发团队 研发

上手体验!如何借助龙蜥实验室快速部署 Web 应用?

OpenAnolis小助手

开源 国产操作系统 web服务器

聊聊redo log是什么

程序猿阿星

Redo Log MySQL InnoDB

Kafka中指定副本为Leader的三种实现方式

石臻臻的杂货铺

kafka 运维

高性能图计算系统 Plato 在 Nebula Graph 中的实践

NebulaGraph

图数据库 图计算 分布式图数据库

Hoo虎符研究院|2022年三月值得关注的赛道

区块链前沿News

Web NFT 元宇宙 虎符交易所

检测图片中是否有二维码

逆锋起笔

android 二维码 Android端 3月月更

数仓中长跳转问题复现及解决方案

华为云开发者联盟

寄存器 GaussDB(DWS) 长跳转 编译器O2

iOS防截屏|担心App内容被截屏泄露吗?这个开源库就是你要的

LabLawliet

ios

云原生多云应用利器 -- Karmada 调度器

Daocloud 道客

Kubernetes 云原生 开源软件 Karmada

EMQ 正式成为 OASIS 最高级别成员,主导推进物联网协议标准化应用

EMQ映云科技

开源 物联网 ibm mqtt OASIS

web前端培训:Vue3 调度系统的深度剖析

@零度

Vue 前端开发

博文推荐|使用 Apache Pulsar 构建边缘应用程序

Apache Pulsar

开源 架构 分布式 云原生 Apache Pulsar

为什么需要线程池?什么是池化技术?

CRMEB

2022年1月娱乐直播行业用户洞察:行业格局稳定,内容运营精细化

易观分析

如何获取 Docker 容器的 IP 地址

AlwaysBeta

Docker 容器

会声会影2022脸部索引功能详解

懒得勤快

始于信任 忠于专业|DataPipeline收到一封来自山东城商行联盟的感谢信

DataPipeline数见科技

Redis现网那些坑:用个缓存,还要为磁盘故障买单?

华为云开发者联盟

redis 缓存 SSD 磁盘故障 缓存Redis

智汇华云 | Kubernetes多集群管理方案kubefed原理解析

华云数据

云计算 华云数据 虚拟云

通过简书网学习 ActionChains,selenium webdriver 学习第3篇

梦想橡皮擦

Python 3月月更

PostmangRPC功能使用介绍

蜜糖的代码注释

gRPC 调试 Postman 3月月更

首发|Clusterpedia 0.1.0 四大重要功能

Daocloud 道客

开源项目 多云管理 K8s 多集群管理 多云资源复杂检索

DM 中 relay log 性能优化实践丨TiDB 工具分享

PingCAP

Ember 速度最快、性能最高的渲染技术框架之一

devpoint

前端框架 ember.js

为什么需要线程池?什么是池化技术?

王磊

面试

放弃SVN,苹果WebKit迁移到GitHub_文化 & 方法_罗燕珊_InfoQ精选文章