今天不小心在 repo-browser 上右键 delete 了一个目录A,结果发现 svn 服务器上该目录删除了,但是目录底下的子文件看不到却还在,表现为每次 update 最新代码时会add这些子文件到本地,但由于没有目录,导致本地实际不会有目录和子文件。
想要通过重新提交目录来修复,发现提交空目录后,从 repo-browser 里看目录是空的。即改新目录和子文件的对应关系丢失。
重新提交子文件,提示 no modification。
将子文件在本地 delete 再提交,又提示 各种 missing 和 conflict,大意是本地的目录和 svn 服务器的目录不是一个目录。
解决办法:
1. checkout 一份最新的代码,该代码中没有删掉的目录A,查看 svn 号为12345。
2. 查看删除之前的 svn 号为12344。
3. dos命令行进入目录A的父目录,执行“svn merge -r 12345:12344 ." ,注意命令最后的点,因为目录A已删除,需要操作父目录。
4. 执行 svn commit -m "Revert delete." 。恢复后创建了一个新版本,并且日志也都还在(如果add目录A同名目录的话log是丢失的)。
如果要删除目录及目录下的内容,还是走commit吧,别在repo-browser上删除。