Git 如何在源代码管理下获取buildroot项目
我工作的公司开发了一种产品,它需要我们使用的嵌入式Linux,就像许多其他产品一样Git 如何在源代码管理下获取buildroot项目,git,buildroot,Git,Buildroot,我工作的公司开发了一种产品,它需要我们使用的嵌入式Linux,就像许多其他产品一样 在任何情况下,我都希望使用Git对项目进行源代码控制,因为它是我们对公司所有其他项目进行源代码控制的工具。问题是,我不知道应该在源代码管理中保存哪些文件(因为保存整个buildroot目录似乎有些过分) 最简单的方法是克隆buildroot存储库(它不是很大),并根据发布标签创建自己的分支。这使得您可以轻松地修改buildroot,但很难创建全局标记和分支(即,为buildroot和您自己的代码提供相同的标记)。
在任何情况下,我都希望使用Git对项目进行源代码控制,因为它是我们对公司所有其他项目进行源代码控制的工具。问题是,我不知道应该在源代码管理中保存哪些文件(因为保存整个
buildroot
目录似乎有些过分)
第三种选择是使用Android的repo工具将buildroot、linux、您自己的代码和您修改的其他软件包的git存储库结合起来。这结合了我给出的两个选项中的最佳选项(易于修改并支持全局标记/分支)。但我自己从未尝试过,所以我不能保证它会很好地工作。我最近在我们的组织中解决了同样的问题,我发现这是一个有趣的话题。我将在这里描述我们的部分解决方案: 管理您使用的buildroot版本 编辑:最近的经验对我来说强调了这一点 Buildroot为每个版本的Buildroot写入不同的配置文件。为了能够共享这些内容,您需要向所有相关人员指定存储库使用的Buildroot版本
.config
README.md
linux.config
build/busybox-1.22.1/.config
libdc1394.patch
opencv_2.3.1a.patch
target-overlay/README~
target-overlay/etc/dropbear/dropbear_ecdsa_host_key
target-overlay/etc/dropbear/dropbear_rsa_host_key
target-overlay/etc/fstab
target-overlay/etc/httpd.conf
target-overlay/etc/init.d/S51mount_html
target-overlay/etc/init.d/S52new_ip_address
target-overlay/etc/init.d/S53httpd
target-overlay/etc/network/interfaces
target-overlay/etc/shadow
target-overlay/etc/sshd_config
target-overlay/lib/firmware/rtl_nic/rtl8168g-2.fw
target-overlay/root/.ssh/authorized_keys
将对buildroot的更改保存为修补程序
无论何时更改buildroot存储库中的内容,都要扩展该功能,并为其创建补丁。将补丁保存在您的存储库中,并使用README.md文件向其他人解释如何将其应用于buildroot树。我通过使用
git子模块
和buildroot br外部
功能解决了同样的问题
从这个意义上讲,您只需要启动一个空的存储库并将buildroot版本作为其子模块导入
mkdir myrepo; cd myrepo
git init
touch README; git add README; git commit -m "Initial commit"
git submodule add -b <preferred release/tag/branch> git://git.buildroot.net/buildroot
git submodule update --init
完成此操作后,只需运行buildroot defconfig步骤,将绝对路径传递到br外部目录,如下所示
make BR2_EXTERNAL=$PWD/br-external -C buildroot <boardname>_defconfig
>无论何时更改buildroot存储库中的内容,我建议您使用子模块,只使用标记版本的buildroot,并将所有提交放在最上面。然后,当您想要升级时,选择另一个带标签的版本,并在此基础上重新设置所有内容的基础。下面是一个最小的树外构建示例:如何跟踪包修改:
mkdir br-external
# below command assumes you have all structures ready somewhere else
cp -fva .../configs .../package .../board br-external
touch br-external/{Config.in,external.mk}
(edit Config.in and external.mk)
git add br-external
make BR2_EXTERNAL=$PWD/br-external -C buildroot <boardname>_defconfig
cd buildroot
git pull origin latest-release
cd ..
git add buildroot
git commit -m 'buildroot latest-release upgrade'