迁移¶
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 |
上传更改以供审查 |