You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用git bundle打包Raspberry Pi Pico SDK主仓库及子模块?

解决Git Bundle打包Pico SDK子模块的问题

Git bundle本身不直接支持自动包含子模块,但可以通过批量脚本一次性打包主仓库和所有子模块,避免手动逐个处理的麻烦,具体步骤如下:

有网络电脑上的打包操作

  1. 确保你已经完成子模块的初始化和更新(你之前执行的git submodule update --init已经满足要求)
  2. 执行以下bash脚本,自动生成主仓库bundle、所有子模块的bundle,以及子模块路径映射文件:
#!/bin/bash
# 生成主仓库bundle
git bundle create ../pico-sdk-main.bundle master

# 初始化子模块信息记录文件
SUBMODULE_INFO="../submodules-info.txt"
> $SUBMODULE_INFO

# 递归遍历所有子模块,生成对应bundle并记录路径信息
git submodule foreach --recursive '
  SUB_PATH=$path
  # 把路径中的斜杠替换为横杠,避免文件名冲突
  BUNDLE_NAME="../pico-submodule-${SUB_PATH//\//-}.bundle"
  git bundle create $BUNDLE_NAME HEAD
  echo "$SUB_PATH $BUNDLE_NAME" >> $SUBMODULE_INFO
'
  1. 把生成的pico-sdk-main.bundle、所有pico-submodule-*.bundle文件和submodules-info.txt一起拷贝到无网络的电脑。

无网络电脑上的恢复操作

  1. 先克隆主仓库bundle:
git clone pico-sdk-main.bundle pico-sdk
  1. 进入主仓库目录,执行以下脚本完成子模块的恢复:
#!/bin/bash
SUBMODULE_INFO="../submodules-info.txt"

while read SUB_PATH BUNDLE_NAME; do
  # 创建子模块目录
  mkdir -p $(dirname $SUB_PATH)
  # 克隆子模块到对应路径
  git clone $BUNDLE_NAME $SUB_PATH
  # 切换到主仓库期望的子模块版本
  cd $SUB_PATH
  git checkout $(git rev-parse HEAD)
  cd ../
done

# 完成子模块关联初始化
git submodule init

备选方案(仅需静态文件时使用)

如果不需要保留Git仓库结构,只是要完整的SDK文件,可以用git archive直接打包所有内容(包括子模块):

git archive --format=tar.gz --prefix=pico-sdk/ --recurse-submodules master > pico-sdk-with-submodules.tar.gz

将生成的压缩包拷贝到无网电脑解压即可。

内容的提问来源于stack exchange,提问作者Angus Comber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 10:17:10