![如何维护已修补的上游软件包](https://linux22.com/image/958041/%E5%A6%82%E4%BD%95%E7%BB%B4%E6%8A%A4%E5%B7%B2%E4%BF%AE%E8%A1%A5%E7%9A%84%E4%B8%8A%E6%B8%B8%E8%BD%AF%E4%BB%B6%E5%8C%85.png)
我正在寻找维护上游 ubuntu 软件包修补版本的最佳方法。情况如下:
我们有自己的运行 reprepro 的服务器,用于托管修改后的软件包。我们的其他软件包使用 git 和 git 打包工具(git-dch、git-buildpackage)进行管理。
我有一个 .diff 文件,其中包含对上游源的补丁,我之前已经通过执行apt-get source pkgname
、应用它并运行 debuild 来应用它。这次我想使用 git 正确跟踪它。
管理这个问题的最佳流程是什么?
答案1
我建议使用与 Flimzy 略有不同的东西。看看git-import-dsc
和可能的git-debimport
。它们将自动从 Debian 源包创建单独的上游、debian 和 prinstine-tar 分支。然后,您可以为补丁集创建自己的分支。每次向 Ubuntu 上传新内容时,您只需git-import-dsc
在新包上运行并与您的分支合并即可。
bzr
如果您不习惯,使用 会更简单git
。每个 Ubuntu 软件包也可以在分支中找到bzr
。bzr branch ubuntu:$PACKAGE_NAME
将为您获取源分支。进行更改并提交。然后,每当有新的 Ubuntu 上传时,您只需运行bzr merge-package ubuntu:$PACKAGE_NAME
答案2
我希望我完全理解你的问题...
以下是我的做法:
- 将 *.orig.tar.gz *.diff.gz 和 *.dsc 文件放在与您的包适当命名的目录中
- 解压源代码(dpkg-source -x *.dsc)。你现在将有三个文件和一个子目录
- 将其提交到你的 RCS(提交 A)
- 应用你的更改,并提交到你的 RCS(提交 B)
- 进行任何未来更改并提交(提交 N)
当新的上游版本发布时:
- 在提交 A 和提交 N 之间创建差异
- 重复上述步骤 1-3
- 应用你的 diff(在步骤 1 中创建),然后提交(新提交 A)
- 进行任何未来更改并提交(提交 N)
冲洗,重复。