代码库中不相关代码的处理

在开发嵌入式项目时,需要接触uboot、linux等大型的代码库,全部拉取该库后项目中充满了与项目不相关的代码,比如不同设备的bsp代码。不同体系结构的CPU库代码等等。这些文件存在项目中,对代码分析与代码管理造成很大的干扰,出于需要保持项目代码的完整性的目的,又不能粗暴的将不相关的代码直接删除,有没有一种方法,只检出与项目相关的部分代码,又不破坏整个项目的文件结构?
git为了提高大仓库的检出效率, 从1.7版本后开始提供了部分代码检出功能,针对大仓库进行性能优化,
该功能就是:稀疏检出(git-sparse-checkout)
该方法提供了为本地代码库检出指定的代码,而不将所有的代码都检出到工作区,提高了代码的检出效率,使工程目录更精简方便。
在实际中,只需对git做要简单的配置便可开启此项功能。

配置方法:

  • 1 设置core.sparseCheckout true

  • 2 创建新文件.git/info/sparse-checkout

  • 3 配置文件内容到 .git/info/sparse-checkout

    后续git的操作,checkout,add,commit等跟之前的使用git操作是一致的

配置实例

以 rt-thread为例,在实际的开发中,移植rtt到一个新的板子上运行,该芯片为risc-v,在项目中只想保留os与risc-v相关的代码,
其他的代码不用检出,并且不影响整个库的完整性。
A 已存在项目的配置

如果项目仓库已经检出,只是需要将不相关的代码移除

1 开启sparsecheckout配置

$ git config core.sparsecheckout true

2 添加sparse-checkout 文件

$ touch .git/info/sparse-checkout

3 修改sparse-checkout文件内容
该文件支持通配符 '*','!',其中 '*' 可以匹配所有项,'!' 指排除项

参考内容如下:
/*                                     // 检出所有文件
!/bsp/*                                // 屏蔽bsp下的所有内容
/bsp/nuclei/*                          // 添加bsp中相关芯片目录

!/libcpu/*                             //屏蔽libcpu下所有内容
/libcpu/risc-v/common                  //添加risc-v相关目录    
/libcpu/risc-v/SConscript              //添加编译相关文件

/libcpu/Kconfig                        //添加libcpu下编译相关文件
/libcpu/SConscript

4 $git checkout origin master
B 新项目的配置

全新的本地仓库,只检出相关的代码

1 创建新文件夹 

$ mkdir rt-riscv && cd rt-riscv

2 初始化本地仓库

$ git init rt-riscv

3 配置仓库地址

$ git remote add origin git@gitee.com:rtthread/rt-thread.git   //  配置git仓库地址

4 开启sparsecheckout配置

$ git config core.sparsecheckout true

5 添加 sparse-checkout 文件

$ touch .git/info/sparse-checkout

6 修改sparse-checkout文件内容 

    该文件支持通配符 '*','!',其中 '*' 可以匹配所有项,'!' 指排除项

参考内容如下:
/*                                     // 检出所有文件
!/bsp/*                                // 屏蔽bsp下的所有内容
/bsp/nuclei/*                          // 添加bsp中相关芯片目录

!/libcpu/*                             //屏蔽libcpu下所有内容
/libcpu/risc-v/common                  //添加risc-v相关目录    
/libcpu/risc-v/SConscript              //添加编译相关文件

/libcpu/Kconfig                        //添加libcpu下编译相关文件
/libcpu/SConscript

7 $git checkout origin master

关闭sparse checkout功能

git sparse-checkout disable
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值