SVN转GIT迁移时执行fetch操作出现.metadata文件锁定报错
error: could not lock config file /SVN2GIT_NEW/svn2github_migration/cfe-sd-mfw/cfe-sd-mfw-HealthRepository/.git/svn/.metadata: File exists
config svn-remote.svn.branches-maxRev 100: command returned error: 255
该报错由git svn操作异常中断导致,进程退出时没有正常释放文件锁,删文件失败一般是存在进程占用该文件、或者当前操作账号权限不足。
解决步骤
- 终止占用文件的进程
Linux/macOS下执行命令查询占用进程:lsof /SVN2GIT_NEW/svn2github_migration/cfe-sd-mfw/cfe-sd-mfw-HealthRepository/.git/svn/.metadata
拿到返回结果中的PID后,执行kill -9 对应PID终止进程。
Windows下打开资源监视器,在「关联的句柄」搜索框输入上述文件路径,找到对应进程后右键结束即可。 - 强制删除锁文件
确认当前账号对目标目录有读写权限,权限不足时可加上sudo执行删除:sudo rm -f /SVN2GIT_NEW/svn2github_migration/cfe-sd-mfw/cfe-sd-mfw-HealthRepository/.git/svn/.metadata - 清理git svn异常状态
执行git svn cleanup清除残留的异常操作标识,之后再重新执行fetch操作即可。 - 极端场景处理
如果上述操作都无效,可以先将本地工作区的修改提交或暂存后,删除本地.git/svn/目录,再重新执行git svn fetch即可。注:该操作只会清除本地存储的svn同步元数据,不会改动本地git提交记录和工作区代码
内容的提问来源于stack exchange,提问作者Shalini
相关产品推荐
相关产品推荐

