从已存在的巨型本地REPO目录中复制一份原始仓库
标签搜索
侧边栏壁纸
  • 累计撰写 2 篇文章
  • 累计收到 0 条评论

从已存在的巨型本地REPO目录中复制一份原始仓库

soloxyq
2026-01-21 / 0 评论 / 4 阅读 / 正在检测是否收录...

完全不需要重新从网络下载。对于 Android 庞大的代码库,利用现有的 .repo 目录进行本地引用 (Reference) 或 本地克隆 是最快且最节省空间的方法。

这里推荐使用 repo init 的 --reference 参数。这种方法利用你已经下载好的 SDK 中的 .repo 目录作为对象库,速度极快(几分钟内完成),且基本不占用额外的网络带宽。

方法:使用 --reference 创建干净副本

假设你的当前代码目录(已修改)路径为:~/project/s905y5_dev 你想建立的新备份目录(干净的)路径为:~/project/s905y5_clean

请按照以下步骤操作:

1. 创建新目录并进入

mkdir ~/project/s905y5_clean
cd ~/project/s905y5_clean

2. 初始化 Repo (关键步骤)

使用与你第一次下载时完全相同的 repo init 命令,但要在最后加上 --reference 参数,指向你旧的代码目录。如果需要指定repo,可加参数 --repo-url=~/y5/.repo/repo

(如果你使用的是国内服务器):

repo init \
  -u ssh://git@openlinux.amlogic.com/u-amlogic/platform/manifest.git \
  -b u-amlogic \
  -m openlinux/ott/u-amlogic-20250115-aosp.xml \
  --reference=~/project/s905y5_dev

(如果你使用的是海外服务器):

repo init \
  -u ssh://git@openlinux2.amlogic.com/u-amlogic/platform/manifest.git \
  -b u-amlogic \
  -m openlinux/ott/u-amlogic-20250115-aosp.xml \
  --reference=~/project/s905y5_dev
原理解析: --reference 会告诉 repo:“不要去服务器下载 git 对象(objects),直接去 ~/project/s905y5_dev/.repo 里面找。” 只有当本地缺少某些对象时,它才会去联网获取。

3. 同步代码

repo sync -j8
  • 速度: 这步会非常快,因为主要是本地文件的 Check out(检出),而不是网络下载。
  • 状态: 检出后的代码是纯净的,完全等同于服务器状态,不包含你在旧目录做的任何未提交的修改 (git status 是干净的)。

注意事项 (非常重要)

  1. 依赖关系: 使用 --reference 后,新目录 (s905y5_clean) 会依赖旧目录 (s905y5_dev) 的 .repo 文件夹。

    • 风险: 如果你删除了旧目录 s905y5_dev,新目录可能会坏掉。
    • 解除依赖: 如果你希望新目录完全独立(即便删了旧目录也能用),可以在 sync 完成后,执行:

      # 这会将引用的对象真正拷贝过来,会占用更多磁盘空间,但断开依赖
      repo sync --dissociate
  2. 磁盘空间: 如果不使用 --dissociate,新目录只占用“工作区文件”的大小(约 30-50GB),而不会重复占用巨大的 .repo 对象库(约 100GB+)的空间。这是最省空间的做法。
  3. playready错误: 找到.repo/manifests/openlinux/ott/u-amlogic-20250115-aosp.xml,注释掉
    image.png

总结

你只需要执行带有 --reference=/你的/旧/SDK/绝对路径 的 repo init 命令,然后 repo sync 即可。这能在几分钟内为你还原一个干净的、和服务器一致的 SDK 环境。

0

评论

博主关闭了所有页面的评论