刚开始在SVN上建立项目时,把工程代码导入到了版本库的根目录,没有放在trunk里,当时没有多想这个问题。现在项目分支越来越多了,发现没有tag或者branch,真是非常麻烦,所以得想办法把已经使用了近两个月的版本库移动到trunk里。
首先尝试使用svn客户端的move或者copy命令,发现它不能完全把已有的log拷贝过来,并且增加了额外的版本记录,达不到一个正常使用的版本库的效果。然后,尝试在svn服务器,使用svnadmin的相关命令完成了整个版本库的移动,具体操作如下:
1.将需要移动的版本库完整地导出为一个单独文件
命令:svnadmin dump
local_old_repositories_path >
dumpfile_path
导出来的文件是二进制格式,一般的非二进制处理方式的文档编辑器打开、保存后,会破坏格式,导致后续导入时某些提交校验出错。如果仅是完整移动版本库,则不需要编辑dump文件,直接在后面load导入即可。但是想修改其中的字段,建议使用WinHex以16进制方式编辑。根据我现在的需求,需要把dump文件里的路径信息都改成trunk/下,直接用替换的方式修改"Node-path: "部分。
2.重新创建一个新的版本库
命令:svnadmin create
new_repositories_path
创建时,如果dump文件里已经有创建branch、tag、trunk文件夹动作,那这次就不需要
创建时,如果dump文件里已经有创建branch、tag、trunk文件夹动作,那这次就不需要