当前位置: 首页>>技术教程>>正文


如何向 Launchpad 项目提交补丁?

, , ,

问题描述

由于具有 Git/GitHub 背景,并且对 Bazaar VCS 知之甚少,我偶尔会向 Launchpad 上托管的项目报告错误,甚至发送补丁。我想以 “proper” 的方式进行,以便它准备好合并或改进,同时不会妨碍。

我似乎找不到适合我的需要的像样的简单 How-to 。

到目前为止我做了什么:

  1. 我已经创建了一个 Launchpad 帐户,

  2. 报告了该错误,

  3. 安装了 Bazaar 并设置了 SSH 密钥等。

如果是 GitHub,我会

  1. 分叉回购协议,

  2. 克隆分叉的存储库,

  3. 创建一个名称明确的分支并完成工作,

  4. 提交+推送,

  5. 使用 GitHub WUI 创建拉取请求。

但它不是 GitHub,Launchpad 和 Bazaar 架构似乎与 GitHub/Git 的对应架构有很大不同。

那么,善良的灵魂能否将我从大量文档中解救出来,并编写一个简单的步骤路径(主要是第二部分)?可能在需要时包含相关的 CLI 命令?


编辑:看来我应该澄清一下我是否专门询问 Ubuntu 软件包(无论它意味着什么)或 Launchpad 项目。

我不太关心 Ubuntu 软件包和非 Ubuntu 软件包之间的区别。任何软件都可能今天在 Ubuntu 中,明天就退出 Ubuntu,反之亦然。发展比分配更重要。

所以我假设

  • 并非 Ubuntu 中分发的每个软件包都托管在 Launchpad 上,

  • Launchpad 存在 “official” 或 “default” 工作流程(如果所有开发人员都同意使用 Bazaar,为什么他们中的大多数人不能就修补工作流程达成一致?),

所以我问的是 Launchpad 方式,而不是 Ubuntu 方式。我选择 AU 是因为交叉点很大,我想这里的主题很切题。

最佳答案

这是一个 Launchpad 项目吗?

(如果您已经知道这是一个 Launchpad 项目,则可以跳过此部分。)

并非 Launchpad 上找到的所有项目实际上都在那里托管和开发 – 有些是其他地方托管的代码镜像(GitHub/Gitorious/etc),其他来自 Debian。这些原始源被称为 “upstream” 项目,通常最好在源处提交补丁并让更改到达 Ubuntu 中的 “downstream”(通常在下一个版本中)。

应在项目页面上清楚地标明它是托管在其他地方还是在 Launchpad 上。如果没有,只需询问项目维护人员他们希望如何接收更改。一些上游项目更喜欢简单的补丁文件,其他项目更喜欢通过各自的主机提交/推送。

特别注意的是,官方 Ubuntu 软件包(存储在官方 Ubuntu 存储库中的软件,您可以从软件中心安装)有几种不同的方式来提交补丁,因为其中许多软件包直接来自 Debian,并且最好应该在那里修复而不仅仅是在 Ubuntu 中。 (这是另一个问题。)

如何提交补丁

提交补丁的一般方法是创建分支,在本地提交并将其推回到 Launchpad:

bzr push lp:~user/project/branch-name

然后,您可以通过网站或使用 bzr lp-propose 命令建议您的分支合并到您分支的父级中。

如果您已提交错误,并且您的分支确实修复了该错误,请务必在提交时执行以下操作,其中 000000 替换为您的错误编号,假设它是在 Launchpad 上报告的错误,而不是在其他地方报告的错误。

bzr commit --fixes=lp:000000

关于 “default” 工作流程的说明

这几乎是典型的现代工作流程,您可以将其与 GitHub 进行比较。不过,Launchpad 的存在时间较长,因此此工作流程是事后演变的,而不是从一开始就内置到系统中的,因此一些较旧的项目可能依赖于其他接受补丁的方法。不过,大多数较新的项目都依赖于这个工作流程,在 GitHub 上,”pull requests” 一直存在,人们只是默认使用它,因为在 GitHub 上从来没有办法做不同的事情。

次佳答案

初始答案基于此处的 dobey’s answer 和 project-specific 问题的 Jorge Castro’s answer。欢迎编辑/更正/建议。

  1. 创建一个启动板帐户。这将包括 Launchpad 用户名 ( LP-USER )

  2. 将您的 SSH 密钥添加到位于 https://launchpad.net/~LP-USER/+editsshkeys 的启动板

  3. 在启动板上,记下项目名称 ( PROJECT-NAME )。

  4. 报告针对项目的问题。该问题将被分配一个错误编号(000000)。

  5. 确保 Bazaar 已安装 dpkg-query -l bzr 。您可能想阅读 Bazaar/Launchpad integration

  6. Configure bzrbzr whoami "Your Name <[email\xa0protected]>"bzr launchpad-login LP-USER

  7. 在您的计算机上,查看项目的本地分支

    \n

    bzr branch lp:PROJECT-NAME\n

    \n

    (这将创建一个名为 PROJECT-NAME 的文件夹,其中包含最新的项目代码。)

  8. 让项目运行起来。做出改变。测试您的更改。 (这些步骤是项目和 issue-specific。)

  9. 提交您的更改,包括错误号 (000000)。

    \n

    bzr commit --fixes=lp:000000\n
  10. 这将打开一个提交对话框,您可以在其中添加一个更改日志条目来解释您的更改。

  11. 将您的更改推送到 Launchpad。 (这将创建一个与您的帐户关联的新远程分支。)

    \n

    bzr push lp:~LP-USER/PROJECT-NAME/NEW-BRANCH-NAME\n

    \n

    ( NEW-BRANCH-NAME 应该是已修复问题/添加功能的简短描述性名称)

  12. 使用 bzr lp-open 或转到 https://code.launchpad.net/~LP-USER/PROJECT-NAME/NEW-BRANCH-NAME/ 在浏览器中打开分支

  13. 通过选择“建议合并”建议与 bzr lp-propose 或从最后一步中的 URL 进行合并,添加描述,粘贴到您想要建议合并的分支的 lp:PROJECT-NAME 中,然后单击 Submit

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/14215.html,未经允许,请勿转载。