如何在私有gitolite服务器中镜像正式的Linux内核树?

如何在私有gitolite服务器中镜像正式的Linux内核树?,git,svn,linux-kernel,gitolite,Git,Svn,Linux Kernel,Gitolite,我们使用嵌入式ARM Linux系统,并拥有一些基于SBC的产品,这些产品具有由它们控制的定制硬件。因此,我们需要开发定制的内核驱动程序,有时还需要修改现有的驱动程序。自从我们开始使用Subversion以来,我们选择的策略是使用一个“供应商分支”来保留要使用的香草内核,然后为每个产品创建一个分支,在那里我们将为SBC应用所需的补丁并进行我们自己的修改,这与 谢天谢地,几个月前,我们决定将项目迁移到git,因此我们设置了一个gitolite服务器,用于在开发团队之间共享项目,根据需要从SVN迁移

我们使用嵌入式ARM Linux系统,并拥有一些基于SBC的产品,这些产品具有由它们控制的定制硬件。因此,我们需要开发定制的内核驱动程序,有时还需要修改现有的驱动程序。自从我们开始使用Subversion以来,我们选择的策略是使用一个“供应商分支”来保留要使用的香草内核,然后为每个产品创建一个分支,在那里我们将为SBC应用所需的补丁并进行我们自己的修改,这与

谢天谢地,几个月前,我们决定将项目迁移到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服务器的问题,还是有更直接的方法


基本上就是这样。

据我所知,您有两个感兴趣的遥控器:

  • 主内核存储库(比如Github中的一个)
  • 你的gitolite存储库
这其实很简单。您只需使用
git remote add…
在您的本地存储库中添加两个远程设备(您可能已经为gitolite添加了这两个远程设备)。然后,您需要从一个远程设备获取内容,将它们与您的代码合并,如果您满意,则将其推送到另一个远程设备。这个过程与从香草内核获取更新并应用于您自己的远程或其他方式完全相同


…除了,您不能推送到不是您的存储库(当然)。因此,当你为香草内核做出贡献时,你需要发送一个请求,并说服Linus或他的一个仆人接受你的请求。(注意:Linus不接受github pull请求)

感谢您的帮助@Daniel Baulig。您的过程是正确的,但我意识到我没有强调真正的疑问是如何将Office树导入gitolite并保持更新以供开发人员使用,而不是确切地说如何注册新的remote并推送到它。我对问题进行了编辑以使其更清楚。无论如何谢谢你!感谢您的回答@Shahbaz。正如我在上面对Daniel所说的,我的主要问题是如何进入我在机器上克隆的官方树gitolite(我编辑了这个问题来指出这一点)。一旦它在服务器上“存在”,我不确定是否正确的方法是让服务器从官方树中获取更新,或者我是否必须从官方树中获取更新到我的机器,然后将其推回到私有服务器,这似乎就是你所说的。@Claudio,你一定要自己从官方的树中拉出来,只有在合并后才推到你的私有服务器上,并确保没有冲突。另一种解决方案可能甚至不可能,因为私有存储库可能保留一个“裸”git存储库。