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

特别注意事项

  1. 不能只拷源码,要带上.repo和.git等全部隐藏目录!
  2. 拷贝时目标目录最后要加 / 或 /.,避免目录嵌套结果变成/mnt/a/Android/Android/
  3. 如果你用到了符号链接、特殊权限、对象存储等,建议用rsync,参数-aHAX保证最大限度保留原属性。
  4. .repo目录体积很大,尤其是下载的.git对象和Manifest,不完全拷贝会导致repo失效。
  5. 迁移不用修改manifest、repo配置,不需要重新初始化或sync –force(除非出现损坏)。

 

发表回复

后才能评论