如何向 Launchpad 项目提交补丁?

Alo*_*dal 21 launchpad patch bazaar git

由于具有 Git/GitHub 背景并且对 Bazaar VCS 知之甚少,我想偶尔向 Launchpad 上托管的项目报告错误,甚至发送补丁。我想以“适当”的方式来做,这样它就可以在不妨碍合并或改进的情况下进行。

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

到目前为止我做了什么:

  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 中分发的每个软件包都托管在 Launchpad 上,

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

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

dob*_*bey 16

它是一个 Launchpad 项目吗?

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

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

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

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

如何提交补丁

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

bzr push lp:~user/project/branch-name
Run Code Online (Sandbox Code Playgroud)

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

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

bzr commit --fixes=lp:000000
Run Code Online (Sandbox Code Playgroud)

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

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


lof*_*ops 9

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

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

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

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

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

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

  6. 使用bzr whoami "Your Name <name@example.com>"配置 bzrbzr launchpad-login LP-USER

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

    bzr branch lp:PROJECT-NAME
    
    Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

    bzr push lp:~LP-USER/PROJECT-NAME/NEW-BRANCH-NAME
    
    Run Code Online (Sandbox Code Playgroud)

    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