3

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

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

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

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

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

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

那么,如何才能让这个现在“私有”的内核树与官方内核树保持同步呢?

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

4

2 回答 2

2

克隆原始内核源代码:

git clone $KERNEL_URL

为您的私人 gitolite 存储库添加一个远程,将其命名为 gitolite:

git remote add gitolite $GITOLITE_URL

创建您的私人分支

git checkout -b our-branch

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

git push gitolite our-branch

你完成了。

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

基本上就是这样。

于 2012-05-16T22:09:47.207 回答
2

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

  • 主内核存储库(比如 Github 中的那个)
  • 您的 gitolite 存储库

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

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

于 2012-05-16T22:12:44.530 回答