JavaShuo
栏目
标签
SVN版本库的迁移
时间 2020-07-17
标签
svn
版本
迁移
栏目
SVN
繁體版
原文
原文链接
【1.业务需求】
通过前面的SVN搭建,权限配置和强制写日志的工做以后,今天的任务是把原来其它分散的各个版本库统一迁移到新的版本库,集中统一管理。要求不改变原有的版本库的内容和版本号。
【2.基本思路】
要实现版本库的无缝迁移,必须经过如下3个步骤:
①导出旧的版本库
②导入新的版本库
③通知客户端切换版本库分支
首先来看第一步:导出旧的版本库。咱们知道SVN提供了check out命令和export命令签出,导出版本库中的内容。对于版本库内容比较少的状况这种方法能够采用。可是若是版本库中内容比较多,那么这种方法就显得很笨重了,并且还涉及到版本号改变的问题。因此首先摈弃这种作法。
咱们知道Oracle提供了export/import命令来将数据库导出成一个二进制文件,而后导入。一样的SVN也提供了一对命令:dump和 load。不一样的是这两个命令导出的是文本内容(肉眼能够读懂)。并且还有一次性导出和增量导出,单版本导出与多版本导出等多种选择操做,就是这个了。
其次咱们来看“通知客户端切换版本库分支”。在咱们完成服务器端的版本迁移以后,必须通知客户端运行切换分支的命令,不然客户端的提交仍是提交到旧的版本库去。SVN也为咱们准备了这样的命令:svn switch。
【3.相关命令】
首先咱们来看一下SVN的dump和load命令
①svnadmin dump命令语法
svnadmin dump REPOS_PATH
[
-r LOWER[:UPPER
]
]
[
--incremental
]
svnadmin dump命令用于导出整个Repository或Repository下的某个范围的修订版本。REPOS_PATH是版本库的路径,[-r LOWER[:UPPER]]用于指定导出的修订版本范围,由参数-r和两个用:号隔开阿拉伯数字组成。例如:-r 0:50表示导出才版本0到版本50之间的全部修订版,-r是revision的缩写。
而另外一个关键参数是--incremental。它使用增量方式来导出版本,即每次都只导出自上一个版本以来的修改。这样的好处是第一:能够把一个大的文件切分红若干个小的文件。第二:在版本库已经存在的状况下,咱们只须要每次导出修改的部分,不须要每次都导出整个版本库的内容。甚至能够经过hook脚本天天晚上自动将当天的修改dump出来作备份用。
②svnadmin load命令语法
svnadmin load REPOS_PATH
svnadmin load命令用于从标准输入流/其它流中导入版本库,REPOS_PATH是要导入的目标版本库。
③dump和load的输出/入重定向
svnadmin dump myrepos > dumpfile
svnadmin load newrepos < dumpfile
默认状况下dump和load命令分别输出到默认输出设备(屏幕)和从默认输入设备(键盘)导入。但咱们也能够把输出流/输入流重定向。例如上面的第一个命令,使用重定向符>把屏幕的输出定向当前目录下的dumpfile,而第二个命令从当前目录下的dumpfile文件导入。
上面的命令使用起来已经很方便了,那么还有没有更加方便的用法呢?固然有!就是使用管道命令把两个命令合二为一。
svnadmin dump myrepos | svnadmin load newrepos
④svn switch命令语法
svn switch URL
[
PATH
]
switch --relocate FROM TO
[
PATH
]
svn switch命令用于更新工做副本的URL。意即指向新的版本库位置。首先要注意的一点是咱们便可以将整个工做副本指向新的URL,也可将工做副本下的某个目录指向新的URL。
另一个重要的参数就是--relocate。这个参数是否使用对于结果如何有很大影响,使用不当甚至可能会形成版本库不可用。其中有两条重要的规则:
A.假如工做副本只是映射到同一个版本库内的不一样位置,那么使用svn switch便可
B.假如工做副本已经是映射到不一样的版本库,那么必须使用svn switch --relocate
上面第二条规则一般发生在咱们须要将整个版本库迁移到另一台机,或者同一台机的不一样版本库时。这个时候使用--relocate会刷新原有工做副本中每一个文件的URL头部。
【4.示例操做】
好了,下面咱们来看如何执行版本库的迁移工做。
①查看当前旧版本库最新的版本号是多少
C:\peng\Other>svnlook youngest newRepo
161
②分批增量导出版本库内容
C:\peng\Other>
svnadmin dump newRepo -r
0
:
50
> dumpfile1
* Dumped revision
0
.
* Dumped revision
1
.
* Dumped revision
2
.
* Dumped revision
3
.
导出第一个文件,版本号从0到50的修订版本
C:\peng\Other>
svnadmin dump newRepo -r
51
:
100
--incremental
> dumpfile2
* Dumped revision
51
.
* Dumped revision
52
.
* Dumped revision
53
.
* Dumped revision
54
.
* Dumped revision
55
.
导出第二个文件,版本号从51到100的修订版本
C:\peng\Other>
svnadmin dump newRepo -r
101
:
161
--incremental
> dumpfile3
* Dumped revision
101
.
* Dumped revision
102
.
* Dumped revision
103
.
* Dumped revision
104
.
* Dumped revision
105
.
请注意咱们上面三个命令中第2,3个命令多了一个--incremental的参数,这就是采用了增量的方式导出,下面咱们一次按照顺序导入
③分批导入版本库文件
html
C:\peng\Other>svnadmin load newRepo2 < dumpfile1
<<< 开始新的事务,基于最初的修订版
1
* 正在添加路径:a
done.
------- 提交后的修订版
1
>>>
<<< 开始新的事务,基于最初的修订版
2
* 正在删除路径:a
done.
首先导入dumpfile1,而后是dumpfile2,dumpfile3
C:\peng\Other>svnadmin load newRepo2 < dumpfile2
<<< 开始新的事务,基于最初的修订版
50
* 正在添加路径:branches
done.
------- 提交新修订版
12
(从原始修订版
50
装载) >>>
<<< 开始新的事务,基于最初的修订版
51
* 正在删除路径:branches
done.
------- 提交新修订版
13
(从原始修订版
51
装载) >>>
导入文件dumpfile2。依次类推dumpfile3。
若是咱们前面不使用--incremental方式导出,此处分批导入三个dump文件,则会提示错误:版本库文件已经存在。
④客户端切换工做副本URL
C:\peng\Other>svnserve -d -r c:\peng\other
首先咱们把SVN服务的根目录指向c:\peng\other目录,在这个目录下有两个repository,其中一个名为newRepo,另一个名为呢wRepo2。
C:\peng\Other>dir
Volume in drive C is ESOE_W2K
Volume Serial Number is BC1B-
22E6
Directory of C:\peng\Other
2008
-
12
-
26
15
:
10
<DIR> .
2008
-
12
-
26
15
:
10
<DIR> ..
2008
-
12
-
23
10
:
04
<DIR> Backup
2008
-
12
-
26
14
:
21
45
,
578
dumpfile1
2008
-
12
-
26
14
:
22
39
,
567
dumpfile2
2008
-
12
-
26
14
:
23
55
,
740
dumpfile3
2008
-
12
-
15
09
:
08
<DIR> newRepo
2008
-
12
-
26
14
:
20
<DIR> newRepo2
2008
-
12
-
26
15
:
25
<DIR> ps
2008
-
12
-
24
15
:
11
<DIR> Toolbar
3
File(s)
140
,
885
bytes
7
Dir(s)
2
,
668
,
414
,
976
bytes free
C:\peng\Other>
首先咱们从newRepo这个版本库中check out出一个子目录ps
C:\Documents and Settings\qlinpen.E0015609D6309>svn checkout svn://localhost/newRepo/ps c:/peng/other/ps
A C:\peng\Other\ps\ps.txt
取出修订版
170
。
如今该工做副本已经和:svn://localhost/newRepo/ps发生了映射关系。咱们能够使用svnlook info来显示这个工做副本的通常信息
C:\peng\Other>cd ps
C:\peng\Other\ps>svn info
路径:.
地址(URL):svn://localhost/
newRepo
/ps
Repository Root: svn://localhost/newRepo
档案库 UUID:6fbeb35b-c7e4-984d-b2ac-32812dcf3078
修订版:
170
节点种类:目录
调度:正常
最后修改的做者:admin
最后修改的修订版:
170
最后修改的时间:
2008
-
12
-
26
14
:
52
:
32
+
0800
(星期五
,
26
十二月
2008
)
输出信息中明确地指出ps目录指向了svn://localhost/newRepo/ps。下面咱们来把它指向另外一个repository下的同名位置:svn://localhost/newRepo2/ps。
C:\peng\Other\ps>svn switch
--relocate
svn://localhost/newRepo/ps svn://localhost/newRepo2/ps
C:\peng\Other\ps>
通过上面的切换后,再次使用svnlook info输出通常信息,发现URL已经被成功切换过来了
C:\peng\Other\ps>svn info
路径:.
地址(URL):svn://localhost/
newRepo
2
/ps
Repository Root: svn://localhost/newRepo2
档案库 UUID:6fbeb35b-c7e4-984d-b2ac-32812dcf3078
修订版:
170
节点种类:目录
调度:正常
最后修改的做者:admin
最后修改的修订版:
170
最后修改的时间:
2008
-
12
-
26
14
:
52
:
32
+
0800
(星期五
,
26
十二月
2008
)
咱们尝试着在ps目录下修改文件ps.txt为ps.doc,而后提交看看会提交到那个repos去?
C:\peng\Other\ps>svn list svn://localhost/newRepo/ps
ps.txt
C:\peng\Other\ps>svn list svn://localhost/newRepo2/ps
ps.doc
C:\peng\Other\ps>
来自:
http://hi.baidu.com/primechen/blog/item/71a7a1dc2b981fe877c63841.html
相关文章
1.
svn版本库迁移
2.
教科书式SVN版本库迁移
3.
记一次svn版本库迁移
4.
SVN不同版本库迁移
5.
windows下SVN版本库迁移小结
6.
SVN库迁移
7.
svn仓库迁移
8.
svn版本库的拆分及迁移子目录等
9.
SVN代码库迁移
10.
SVN版本库无损迁移与自动备份(二)
更多相关文章...
•
SVN 创建版本库
-
SVN 教程
•
SVN 版本回退
-
SVN 教程
•
Docker容器实战(八) - 漫谈 Kubernetes 的本质
•
Kotlin学习(二)基本类型
相关标签/搜索
迁移
本版
版本
博客迁移
迁移性
网络迁移
迁移博客
人口迁移
svn
SVN
SVN 教程
SQLite教程
MySQL教程
数据库
0
分享到微博
分享到微信
分享到QQ
每日一句
每一个你不满意的现在,都有一个你没有努力的曾经。
最新文章
1.
安装cuda+cuDNN
2.
GitHub的使用说明
3.
phpDocumentor使用教程【安装PHPDocumentor】
4.
yarn run build报错Component is not found in path “npm/taro-ui/dist/weapp/components/rate/index“
5.
精讲Haproxy搭建Web集群
6.
安全测试基础之MySQL
7.
C/C++编程笔记:C语言中的复杂声明分析,用实例带你完全读懂
8.
Python3教程(1)----搭建Python环境
9.
李宏毅机器学习课程笔记2:Classification、Logistic Regression、Brief Introduction of Deep Learning
10.
阿里云ECS配置速记
本站公众号
欢迎关注本站公众号,获取更多信息
相关文章
1.
svn版本库迁移
2.
教科书式SVN版本库迁移
3.
记一次svn版本库迁移
4.
SVN不同版本库迁移
5.
windows下SVN版本库迁移小结
6.
SVN库迁移
7.
svn仓库迁移
8.
svn版本库的拆分及迁移子目录等
9.
SVN代码库迁移
10.
SVN版本库无损迁移与自动备份(二)
>>更多相关文章<<