前言
本文主要是讲如何将多个不同地址的SVN仓库进行备份,和根据需要进行合并。
仓库备份
- svnadmin dump
1、备份方式多样
2、如果版本数过多,dump的过程将非常慢
3、备份耗时,恢复更耗时
4、备份时数据变大,恢复后数据可能会变小
5、库下的passwd
和authz
不会备份
- 全备份
在需要备份SVN仓库的服务器上,
1 2 3 4 5 |
|
- 只备份指定的子目录
1、导出整个库的内容
1
|
|
2、从备份文件中过滤出要导出的目录(可以过滤多个目录)
1
|
|
3、选择是否压缩
1
|
|
注意: projects
目录必须是没有rename的目录,如果是rename后的目录,则导出的文件都是空记录,使用rename前的目录名导出的备份还是rename前的。
为了正确导出rename后的文件,假如rename前的目录名为apple
,步骤2改为include /projects /apple
,这样就可以导出rename后的文件了。
仓库迁移
- 使用FTP等工具,将备份的文件传输到目的服务器上,例如
/home
目录下
仓库合并
- 在目的服务器上创建一个主仓库
/path/main_repository
在本地checkout目的服务器的主仓库
如果需要将迁移的仓库存储到SVN中指定的目录
A
下,则在本地创建这个指定的目录A
,并用svn工具提交到目的服务器。然后登录目的服务器:
1 2 3 4 5 |
|
参数 --parent-dir
是指定版本库main_repository
下的具体路径,这里是第一级目录A
.
- 如果不用迁移到指定目录下,只需要迁移到根目录下,则登录目的服务器:
1 2 3 4 5 |
|
这样就可以将多个仓库合并成一个仓库了。
仓库恢复
- 如果仓库遇到不可修复的问题或者内容够乱,需要恢复到以前备份的仓库。
- 使用FTP等工具,将备份的文件传输到需要恢复的服务器上,例如
/home
目录下 - 登录需要恢复的服务器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
如果是清空svn仓库,则只要去掉导入的步骤就可以了。
参考
http://www.jianshu.com/p/295b423d50ad
http://blog.chinaunix.net/uid-10449864-id-3048714.html
http://blog.chinaunix.net/uid-725717-id-3147440.html