贡献

首先阅读

通过 GitHub 提交的拉取请求将被忽略。

错误应该在 Launchpad 上提交,而不是 GitHub

基于上游仓库构建更改:

这涵盖了您希望在 storlet 仓库的最新版本上添加/更改代码的情况,如果您尚未这样做,请阅读初始 Gerrit 设置部分。

  • git clone https://opendev.org/openstack/storlets.git

这将克隆上游仓库。

  • cd ~/storlets

假设您将 storlets 拉取到您的主目录。

  • git checkout -b <分支 名称>

这将为您创建一个分支 <分支名称> 以进行更改,Gerrit 使用分支名称作为审查页面中的主题字段,因此使其具有意义。

  • ... 进行 代码 更改 ...

  • git add <更改 文件 / 目录>

请注意,您可以通过 GIT 在此处进行任何有效更改(例如,删除文件)。当您完成所有更改并准备将它们推送到 storlets 仓库进行审查时

  • git commit

此时,您需要添加一条注释来解释更改,OpenStack 的标准是在此处使用一个简短的句子,后跟一个空行,然后根据需要进行更详细的解释。

  • git review

此命令不需要任何交互,会将更改推送到 Gerrit 进行审查。

初始 Gerrit 设置:

本节涵盖了设置 Gerrit 所需的一次性步骤

安装 Gerrit(这取决于操作系统而异,例如 ‘apt-get install git-review’)。通过 Gerrit 设置 SSH 密钥(即 https://review.opendev.org/#/settings/ssh-keys),您需要从计划用于更改的系统上传您的公钥。

  • git review -s

这将验证 Gerrit 是否可以使用 ssh 访问服务器。

  • git config --global gitreview.username 您的gerrit用户名

如果 Gerrit 与您系统上的当前用户不匹配,Gerrit 通常会提示您输入 Gerrit 用户名,或者您可以使用上述方法对其进行硬编码(这更清晰)。

对现有补丁集的更改:

本节涵盖了如何将更改推送到现有的补丁集(例如,您进行了一项更改,并且有人提供了您想要解决的审查意见)。只需像往常一样进行所有更改,通常是用于第一个补丁集的初始分支,在将所有文件添加到本地暂存区并准备好提交后

  • git commit --amend

这将附加到之前的提交,Gerrit 使用一个 change-id,它会自动添加到提交消息中,以将服务器上的补丁集关联起来。如果您在编辑提交消息时附加更改,请确保不要更改 change-id 值,否则 Gerrit 将不会将补丁集与原始补丁集关联,并创建一个全新的补丁集。

  • git review

请注意,即使在附加更改时,此命令也是相同的。

变基:

本节涵盖了将现有的本地仓库变基到 storlets 的最新版本所需的各种步骤。如果您尚未进行任何更改(或进行了不冲突的微小更改),则可以随时运行

  • git remote update

  • git checkout master

  • git pull --ff-only origin master

这本质上会将您的本地仓库的 HEAD 移动到 master 的 HEAD,但这只有在不需要合并的情况下才能完成,即快速向前选项(例如,您没有更改任何文件,或者您没有更改自上次变基以来在 master 上更改的任何文件)。

接下来,切换到您尝试变基的分支并运行

  • git checkout <您 尝试 变基的 分支>

  • git rebase master

这将尝试通过自动合并进行变基,但可能会遇到需要手动解决的冲突。将列出这些文件,您需要编辑它们。如果您 git diff 该文件,它将类似于

<<<<<<< HEAD
... some change ...
=======
... some other change ...
>>>>>>> Title of change that introduced the above.

此时,您需要解决冲突(通过选择其中一个版本或组合版本),并在此过程中删除添加的“<<<<<<<”、“=======”和“>>>>>>>”文本。完成手动合并文件后,发出

  • git rebase --continue

以任何方式变基后,您可能需要通过 Ansible 脚本重新安装 storlets 并构建各种文件。如果使用 TOX,您可能需要使用 ‘tox -r …’ 命令重新创建 TOX 环境。

每周会议:

https://wiki.openstack.org/wiki/Meetings/Storlets

IRC 频道:

#openstack-storlets at irc.oftc.net

IRC 日志:

http://eavesdrop.openstack.org/irclogs/%23openstack-storlets/

资源:

https://docs.openstack.org/infra/manual/developers.html https://docs.openstack.org/swift/2025.2/first_contribution_swift.html https://docs.openstack.org/infra/manual/developers.html#development-workflow https://docs.openstack.org/infra/manual/developers.html#development-workflow