如何向Launchpad项目提交补丁?

有了Git / GitHub背景并且对Bazaar VCS知之甚少,我想偶尔向Launchpad上托管的项目报告错误,甚至发送补丁。 我想以“正确”的方式做到这一点,以便它可以在不进入的情况下进行合并或改进。

我似乎无法找到适合我需要的简单方法。

到目前为止我做了什么:

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

  2. 报告了这个bug,

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

现在,如果它是GitHub,我会

  1. 回购仓库,

  2. 克隆分叉回购,

  3. 创建一个名副其实的分支并完成工作,

  4. 提交+推送,

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

但它不是GitHub,Launchpad和Bazaar架构似乎与他们的GitHub / Git对应物完全不同。

那么一个善良的灵魂可以让我免于淹没大量文件并编制一条直截了当的步骤,主要是第二部分? 可能在需要时包含相关的CLI命令?


编辑:似乎我应该澄清我是否具体询问Ubuntu软件包(无论它意味着什么)或Launchpad项目。

我并不太关心Ubuntu软件包和非Ubuntu软件包之间的区别。 任何软件今天都可以在Ubuntu中,明天也可以在其中,反之亦然。 发展不仅仅是分销。

所以我假设那样

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

  • Launchpad的“官方”或“默认”工作流程存在(如果所有开发人员都同意使用Bazaar,为什么大多数人都不同意修补工作流程?),

所以我问的是Launchpad方式,而不是Ubuntu方式。 我之所以选择AU,是因为交叉口很大,我想这里的话题很合适。

它是Launchpad项目吗?

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

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

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

作为特别说明,官方Ubuntu软件包(存储在官方Ubuntu存储库中的软件,您可以从软件中心安装)有几种不同的方式来提交补丁,因为许多软件包直接来自Debian,理想情况下应该在那里修复而不仅仅是在Ubuntu。 (这是另一个问题。)

如何提交补丁

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

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

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

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

 bzr commit --fixes=lp:000000 

关于“默认”工作流程的说明

这几乎是典型的现代工作流程,您可以将其与GitHub进行比较。 但是,Launchpad已经存在了一段时间,所以这个工作流程在事后发展,而不是从一开始就构建到系统中,因此一些较旧的项目可能依赖于接受补丁的其他方法。 大多数所有较新的项目都依赖于这个工作流程,GitHub上的“拉取请求”一直存在,人们只是默认使用它,因为在GitHub上从来没有办法做不同的事情。

基于dobey答案的初步答案和Jorge Castro对项目特定问题的回答。 编辑/更正/建议欢迎。

  1. 创建Launchpad帐户。 这将包括Launchpad用户名( LP-USER

  2. 通过https://launchpad.net/~LP-USER/+editsshkeys将SSH密钥添加到启动板

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

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

  5. 确保安装了Bazaar dpkg-query -l bzr 。 您可能想要了解Bazaar / Launchpad集成 。

  6. 使用bzr whoami "Your Name " 配置bzr bzr whoami "Your Name "bzr launchpad-login LP-USER

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

     bzr branch lp:PROJECT-NAME 

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

  8. 让项目运行。 做出改变。 测试您的更改。 (这些步骤是项目和特定问题。)

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

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

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

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

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

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

  13. 建议与bzr lp-propose合并,或者在最后一步中通过选择“合并建议”,添加描述,粘贴到要建议的分支的lp:PROJECT-NAME ,然后单击“ 提交”