跳到内容

迁移

WebKit 已从 Subversion 迁移到 Git,贡献者需要将其本地检出和工作流程迁移到 GitHub。要确定您需要哪种迁移工作流程,请在您的 WebKit 仓库中运行以下命令:

git remote -v

如果您看到类似内容:

fatal: not a git repository (or any parent up to mount point /Volumes)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).

您有一个 Subversion 检出,需要迁移到 GitHub 检出。

如果您看到类似内容:

origin    https://git.webkit.org/git/WebKit-https (fetch)
origin    https://git.webkit.org/git/WebKit-https (push)

origin    https://git.webkit.org/git/WebKit (fetch)
origin    https://git.webkit.org/git/WebKit (push)

您有一个 废弃的 Git 镜像(关于如何处理上传到 bugzilla 的补丁),需要迁移到 GitHub 检出。

如果您看到类似内容:

origin    git@github.com:WebKit/WebKit.git (fetch)
origin    git@github.com:WebKit/WebKit.git (push)

您已经拥有 GitHub 检出,可以直接跳到 设置您的检出

Subversion

从 Subversion 检出迁移,首先需要使用 git clone https://github.com/WebKit/WebKit.git <local path> 克隆 WebKit 仓库。基于 SSH 的克隆同样可行,但这需要上传一个 SSH 密钥

克隆完成后,设置您的检出。如果您的 Subversion 检出中没有本地更改,则无需进行其他迁移工作。如果您有本地更改,请使用 Tools/Scripts/svn-create-patch 将这些更改保存到本地 .patch 文件中,然后运行 Tools/Scripts/svn-apply 将该补丁应用到您的新 GitHub 克隆。有关如何处理上传到 Bugzilla 的补丁,请参阅下文

废弃的镜像

通过 github.com/WebKit/WebKit 托管的仓库与 git.webkit.org 托管的仓库具有不同的提交记录。尽管可以转换现有检出,但 WebKit 团队建议您使用 git clone https://github.com/WebKit/WebKit/WebKit.git <local path> 重新克隆 WebKit 仓库。基于 SSH 的克隆同样可行,但这需要上传一个 SSH 密钥

克隆完成后,设置您的检出。WebKit 团队尚未构建自动化工具来协助将分支从 git.webkit.org 检出迁移到 github.com/WebKit/WebKit 检出。但是,两个仓库在磁盘上的内容是相同的。这意味着,诸如 git -C <oldpath> diff HEAD~1 | git -C <newpath> apply 这样的命令可以将一个检出的提交应用到另一个检出,前提是您要移动的提交的差异适用于您当前检出的提交。

有关如何处理上传到 Bugzilla 的补丁,请参阅下文

webkit-patch

虽然 Tools/Scripts/webkit-patch 正在被 Tools/Scripts/git-webkit 取代以用于开发工作流程,但 webkit-patch 仍然可以在基于 GitHub 的检出上工作。特别是:

Tools/Scripts/webkit-patch apply-from-bug 238981

会将上传到 bug 238981 的补丁应用到用户的本地检出,即使该检出是基于 GitHub 的检出。类似地,此命令:

Tools/Scripts/webkit-patch upload

会将本地更改上传到修改后的 ChangeLog 文件中提到的 Bugzilla 缺陷,即使这些本地更改已提交到拉取请求分支。

webkit-patch 反向查找

下表包含一些常见的 webkit-patch 命令及其对应的 git-webkit 命令。

webkit-patch git-webkit 描述
webkit-patch apply-attachment git-webkit checkout pr-# 获取其他贡献者未提交的更改
webkit-patch clean git-webkit clean 放弃未提交的本地更改
webkit-patch create-revert <revisions> git-webkit revert --pr <hash/identifier> 上传撤销已提交更改的提议
webkit-patch help -a git-webkit --help 打印程序帮助信息
webkit-patch land git-webkit land 通过提交/合并队列提交本地更改
webkit-patch land-unsafe git-webkit land --unsafe 手动/通过不安全合并队列提交本地更改
webkit-patch prepare-revert <revisions> git-webkit revert <hash/identifier> 在本地撤销已提交的更改
webkit-patch setup-git-clone git-webkit setup 配置本地检出以进行开发
webkit-patch upload git-webkit pr 上传更改以供审查