repo迁移本地项目
用repo管理的Android源码项目,最初clone/下载到了B卷(比如 /mnt/b/Android),B盘空间不够,要把整个repo仓库、源码转移到A卷(比如 /mnt/a/Android),迁移后保留所有.repo配置、索引及已经下载的数据,并且能够在新路径直接通过repo sync继续同步和开发。
这是Android源码开发中常见的迁移场景。重点是要整个目录拷贝,不可以只复制部分源码,否则.repo元数据丢失会导致repo命令无法使用。
推荐操作流程
步骤1:关闭所有使用该代码库的shell或进程
确保没有其他终端或进程占用/mnt/b/Android相关目录。
步骤2:使用rsync或cp完整拷贝所有文件,包括隐藏的.repo
运行如下命令拷贝整个目录(以A卷路径为例):
# 方式1:推荐rsync(保留所有权限、软硬链接、隐藏文件、元数据等,比cp更安全) rsync -aHAXv /mnt/b/Android/ /mnt/a/Android/ # 方式2:也可以用cp -a(注意最后斜杠!) cp -a /mnt/b/Android/. /mnt/a/Android/
- 注意:不要漏掉隐藏的 .repo 文件夹和所有.git/.gitmodules 等文件!
步骤3:检查迁移结果
ls -al /mnt/a/Android/
ls -al /mnt/a/Android/.repo
确保.repo目录和所有源码都在新目录下。
步骤4:进入新目录,测试repo命令
cd /mnt/a/Android/ repo status # 显示当前工作区状态,能正常显示代表迁移没问题 repo sync # 继续同步代码
如果提示找不到manifest、无项目或其它错误,说明目录结构不全或没有包含全部.repo内容。
步骤5(可选):原目录清理
确认A卷可正常操作后,可以删除B卷的旧代码以释放空间:
rm -rf /mnt/b/Android
特别注意事项
- 不能只拷源码,要带上.repo和.git等全部隐藏目录!
- 拷贝时目标目录最后要加
/或/.,避免目录嵌套结果变成/mnt/a/Android/Android/ - 如果你用到了符号链接、特殊权限、对象存储等,建议用rsync,参数
-aHAX保证最大限度保留原属性。 .repo目录体积很大,尤其是下载的.git对象和Manifest,不完全拷贝会导致repo失效。- 迁移不用修改manifest、repo配置,不需要重新初始化或sync –force(除非出现损坏)。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

