我所工作的公司开发的产品需要我们使用的嵌入式Linux,其他许多产品Buildroot。
无论如何,我想使用Git将项目置于源代码控制之下,因为它是我们公司所有其他项目的源代码控制工具。问题是我不知道应该在源代码管理中保留哪些文件(因为保持整个buildroot
目录似乎过度)。
答案 0 :(得分:5)
我最近在我们的组织中解决了同样的问题,我发现这是一个有趣的话题。我将在这里描述我们的部分解决方案:
管理您使用的构建版本
编辑:最近的经验对我强调了这一点。
Buildroot为每个版本的Buildroot编写不同的配置文件。为了能够共享这些,您需要向每个人指定您的存储库使用哪个版本的Buildroot。
构建树外
我强烈建议您使用树构建:http://buildroot.org/downloads/manual/manual.html#_building_out_of_tree
$ cd ~/platform/proj-arm; make O=$PWD -C path/to/buildroot
将配置文件和目标叠加添加到git
将.config文件和子配置文件添加到git存储库。我的回购包含以下内容:
.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树。
答案 1 :(得分:4)
我通过使用git submodules
和buildroot br-external
功能解决了同样的问题。
从这个意义上说,您只需要启动一个空的存储库并导入一个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
然后您可以创建一个br-external
目录,并按照BR2_EXTERNAL
文档1中的说明填充类似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
执行此操作后,您只需要运行buildroot defconfig步骤,将绝对路径传递到br-external目录,就像这样。
make BR2_EXTERNAL=$PWD/br-external -C buildroot <boardname>_defconfig
您的BR2_EXTERNAL位置会被缓存以进行进一步的调用。
最好的部分是你只需要对br-external内部的内容进行版本控制,并且buildroot以一种所有自定义内容被正确分隔的方式构建配置菜单(“用户提供的选项”菜单项)。
此外,如果您决定将buildroot版本提升到新版本,唯一的麻烦就是升级子模块并提交它。完美的配置管理。
cd buildroot
git pull origin latest-release
cd ..
git add buildroot
git commit -m 'buildroot latest-release upgrade'
答案 2 :(得分:1)
您有两个基本选项。
在您的存储库中提取buildroot tarball并将其导入这样做当然不是一个好主意,因为这使得更新buildroot树甚至应用上游补丁变得很困难。如果您确实需要它在您自己的存储库中,请使用git子树合并,以便至少保留上游历史记录。
第三种选择是使用Android的 repo 工具来组合buildroot,linux,您自己的代码和您修改的其他软件包的git存储库。这结合了我给出的两个选项中的最佳选择(易于修改并支持全局标签/分支)。但我自己从未尝试过,所以我不能保证它能够很好地运作。