如何在私有 gitolite 服务器中镜像官方 Linux 内核树



我们使用嵌入式ARM Linux系统,并有一些基于SBC的产品,这些产品由它们控制的定制硬件。因此,我们需要开发自定义内核驱动程序,有时还需要调整现有内核驱动程序。自从我们开始使用 Subversion 以来,选择的策略是使用"供应商分支"来保留要使用的原版内核,然后为每个产品创建一个分支,在那里我们将为 SBC 应用所需的补丁并进行我们自己的修改,非常类似于 https://stackoverflow.com/q/2312984/1007502

值得庆幸的是,几个月前我们决定将项目迁移到 git,因此我们设置了一个 gitolite 服务器,用于在开发团队之间共享项目,根据需要从 SVN 迁移项目,并使用 git 变得更加舒适。在 Linux 内核的特殊情况下,我们认为可以选择使用我们的 gitolite 服务器作为远程开发我们的项目很有趣,但我们希望能够从官方树中获取更新的内核,并最终在它达到允许的状态时做出贡献。

在我自己的机器上,我可以看到如何 git 克隆官方内核树并为我们的产品创建私有分支,根据需要将它们重新基于较新的内核(如这里(; 但是我有点迷茫,我应该如何将官方内核树导入 gitolite 中,开发人员可以从中推送/拉取而不是官方内核存储库, 同时也能够使其与后者保持同步。

这是从我们机器上的官方树中获取更新并将其推送回我们的私人 gitolite 服务器的问题,还是有更直接的方法?

编辑:(澄清问题(
主要问题是:虽然我知道如何初始化一个空的存储库以将未跟踪的代码推送到 gitolite 中,但我不确定如何为我从另一个 git 存储库(例如官方内核树(克隆的内容执行此操作。

一旦我的机器上有它的克隆,将其移动到私有 gitolite 服务器的过程是什么?

那么,如何使这个现在的"私有"内核树与官方内核树保持同步呢?

这个想法是开发人员应该只推送到私有树,最终只向官方树发送补丁,如果有的话。

克隆原始内核源代码:

git clone $KERNEL_URL

为您的私有 gitolite 存储库添加一个遥控器,将其命名为 gitolite:

git remote add gitolite $GITOLITE_URL

创建专用分支

git checkout -b our-branch

将您的私有分支推送到您的私有 gitolite 存储库

git push gitolite our-branch

大功告成。

这是从我们机器上的官方树中获取更新并将其推送回我们的私人 gitolite 服务器的问题,还是有更直接的方法?

基本上就是这样。

据我了解,您有 2 个感兴趣的遥控器:

  • 主内核存储库(例如,Github中的存储库(
  • 您的吉托石存储库

这其实很简单。您只需要使用 git remote add ... 在本地存储库中添加两个远程(您可能已经拥有 gitolite(。然后,您需要从一个遥控器获取内容,将它们与您的代码合并,如果您满意,请将其推送到另一个。这个过程与从原版内核获取更新并应用于您自己的遥控器或相反完全相同......

。除了,你不能推送到不属于你的仓库(当然(。因此,当回馈原版内核时,您需要发送拉取请求并说服 Linus 或他的一个仆人接受您的请求。(注意:Linus不接受github拉取请求(

最新更新