问题描述
由于具有 Git/GitHub 背景,并且对 Bazaar VCS 知之甚少,我偶尔会向 Launchpad 上托管的项目报告错误,甚至发送补丁。我想以 “proper” 的方式进行,以便它准备好合并或改进,同时不会妨碍。
我似乎找不到适合我的需要的像样的简单 How-to 。
到目前为止我做了什么:
-
我已经创建了一个 Launchpad 帐户,
-
报告了该错误,
-
安装了 Bazaar 并设置了 SSH 密钥等。
如果是 GitHub,我会
-
分叉回购协议,
-
克隆分叉的存储库,
-
创建一个名称明确的分支并完成工作,
-
提交+推送,
-
使用 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。欢迎编辑/更正/建议。
-
创建一个启动板帐户。这将包括 Launchpad 用户名 (
LP-USER
) -
将您的 SSH 密钥添加到位于
https://launchpad.net/~LP-USER/+editsshkeys
的启动板 -
在启动板上,记下项目名称 (
PROJECT-NAME
)。 -
报告针对项目的问题。该问题将被分配一个错误编号(
000000
)。 -
确保 Bazaar 已安装
dpkg-query -l bzr
。您可能想阅读 Bazaar/Launchpad integration 。 -
Configure bzr 与
bzr whoami "Your Name <[email\xa0protected]>"
和bzr launchpad-login LP-USER
-
在您的计算机上,查看项目的本地分支
\n
bzr branch lp:PROJECT-NAME\n
\n
(这将创建一个名为
PROJECT-NAME
的文件夹,其中包含最新的项目代码。) -
让项目运行起来。做出改变。测试您的更改。 (这些步骤是项目和 issue-specific。)
-
提交您的更改,包括错误号 (
000000
)。\n
bzr commit --fixes=lp:000000\n
-
这将打开一个提交对话框,您可以在其中添加一个更改日志条目来解释您的更改。
-
将您的更改推送到 Launchpad。 (这将创建一个与您的帐户关联的新远程分支。)
\n
bzr push lp:~LP-USER/PROJECT-NAME/NEW-BRANCH-NAME\n
\n
(
NEW-BRANCH-NAME
应该是已修复问题/添加功能的简短描述性名称) -
使用
bzr lp-open
或转到https://code.launchpad.net/~LP-USER/PROJECT-NAME/NEW-BRANCH-NAME/
在浏览器中打开分支 -
通过选择“建议合并”建议与
bzr lp-propose
或从最后一步中的 URL 进行合并,添加描述,粘贴到您想要建议合并的分支的lp:PROJECT-NAME
中,然后单击Submit
。