BaoYaEr
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的參數,這就是采用了增量的方式導出,下面我們一次按照順序導入
③分批導入版本庫文件
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>
很明顯現在的提交全部都去到新的位置了!切換成功。
發表于 2009-08-29 12:11
大田斗
閱讀(12312)
評論(4)
編輯
收藏
所屬分類:
其它
評論
#
re: SVN版本庫的遷移
您好,我按照您提高的方法,版本庫轉移成功了,但是對新的版本庫Checkout出來,修改,提交,總是報錯。
access to '/svn/demo1/!svn/act/db757c69-17c4-a942-b3a4-b668cc18ce41' forbidden
權限我也給了。能解釋這個錯誤的原因嗎?
shan9liang@163.com
cainiao
評論于 2011-11-28 16:44
回復
更多評論
#
re: SVN版本庫的遷移
可惜 --relocate只能是同名目錄間的操作,遷移到不同目錄下就沒轍了,只能重新checkout?
如果兩個庫uuid設成一樣,會出現什么情況?
Christina
評論于 2013-04-28 13:09
回復
更多評論
#
re: SVN版本庫的遷移[未登錄]
不同目錄下,如何relocate
fj
評論于 2013-05-13 20:27
回復
更多評論
#
re: SVN版本庫的遷移[未登錄]
解決了嗎,不同目錄下@Christina
fj
評論于 2013-05-13 20:28
回復
更多評論
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
maven 的配置收藏
Maven倉庫管理-Nexus
XPath語法
SVN版本庫的遷移
Subversion備份【zt】
使用 Resin 自帶的身份驗證機制給頁面加入密碼保護
mysql 使用
CruiseControl 入門
maven2 起步
windows安裝基于Apache的SVN服務器(包括SSL配置)[
<
2025年5月
>
日
一
二
三
四
五
六
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
導航
BlogJava
首頁
發新隨筆
發新文章
聯系
聚合
管理
統計
隨筆: 32
文章: 427
評論: 144
引用: 0
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(5)
給我留言
查看公開留言
查看私人留言
隨筆檔案
2008年12月 (1)
2008年4月 (2)
2008年2月 (1)
2008年1月 (1)
2007年12月 (3)
2007年11月 (1)
2007年10月 (3)
2007年7月 (2)
2007年6月 (1)
2007年4月 (2)
2007年3月 (3)
2007年2月 (5)
2007年1月 (3)
2006年12月 (4)
文章分類
axis(6)
(rss)
eclipse(7)
(rss)
Hibernate(30)
(rss)
html/js/css(107)
(rss)
java(106)
(rss)
linux(7)
(rss)
Lucene(7)
(rss)
spring(36)
(rss)
Spring CLOUd(1)
(rss)
Strtus(30)
(rss)
其它(48)
(rss)
開源opensource(48)
(rss)
數據庫DateBase(30)
(rss)
設計模式(12)
(rss)
文章檔案
2018年8月 (1)
2012年5月 (1)
2012年4月 (2)
2011年7月 (6)
2010年3月 (1)
2010年2月 (1)
2010年1月 (3)
2009年12月 (1)
2009年10月 (1)
2009年8月 (3)
2009年3月 (1)
2009年2月 (1)
2008年12月 (3)
2008年11月 (10)
2008年10月 (3)
2008年9月 (2)
2008年8月 (2)
2008年7月 (4)
2008年6月 (13)
2008年5月 (15)
2008年4月 (9)
2008年3月 (10)
2008年1月 (18)
2007年12月 (33)
2007年11月 (6)
2007年10月 (18)
2007年9月 (10)
2007年8月 (18)
2007年7月 (15)
2007年6月 (25)
2007年5月 (19)
2007年4月 (26)
2007年3月 (38)
2007年2月 (33)
2007年1月 (27)
2006年12月 (27)
2006年11月 (12)
java
Ajax特效網站
cndiy nio
GRO
Hani Suleiman's blog
Java之路
java論壇
J道
mule
mule 入門
oksonic(動畫教程)
一路由你
中國eclipse
八進制
在線源碼
多線程實戰
天火
小米的blogjava
幻境伯克----jface/swt
很全的博克-強
每日一得
滿江紅
邢紅瑞
飛翔
鳥詩選(js)
鳥食軒 (dhtml)
工具
apache中文手冊
extjs學習
iconFindre
java 安全
javaresearch
java技巧網
js之王
matrix(study)
prototype api
spring中文
北京IT企業速查
在線流程圖工具
雅虎翻譯
朋友
Happyshow
hibernate異常
skywalker
sunshow
xf
亞光
同云博客
小弟鵬
張玉磊
昕
李陽
黃鳴
搜索
積分與排名
積分 - 1101575
排名 - 28
最新評論
1.?re: hibernate.cfg.xml配置
好全啊 .. 棒棒噠 ~ !
--junqinag.yang
2.?re: Quartz任務調度快速入門
我現在來看還是覺得不錯
--小任
3.?re: js中this的總結
評論內容較長,點擊標題查看
--pam
4.?re: Quartz任務調度快速入門
樓主辛苦
--yd
5.?re: Quartz任務調度快速入門
頂了,內容寫的很好
--sen
閱讀排行榜
1.?網頁不緩存(3553)
2.?Form嵌套引起的問題 (2851)
3.?解決IE下CSS背景圖片閃爍的Bug(2446)
4.?Spring AOP的動態載入原理(2404)
5.?如何制作漂亮的Excel表格(2045)
評論排行榜
1.?北京戶口--吃官司(5)
2.?開始→運行→輸入的命令集錦(3)
3.?讓網頁上的所有圖片動起來(2)
4.?Dom4j 編碼問題徹底解決 (1)
5.?心情不爽(1)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 大田斗
主站蜘蛛池模板:
亚洲日韩在线观看免费视频
|
亚洲宅男精品一区在线观看
|
亚洲AV无码男人的天堂
|
h视频在线观看免费完整版
|
亚洲成人中文字幕
|
一区二区三区在线免费看
|
亚洲专区先锋影音
|
久久久高清免费视频
|
亚洲人成综合网站7777香蕉
|
在线jyzzjyzz免费视频
|
亚洲av无码专区国产不乱码
|
国产精品va无码免费麻豆
|
羞羞漫画登录页面免费
|
JLZZJLZZ亚洲乱熟无码
|
国产真人无码作爱视频免费
|
亚洲综合在线观看视频
|
可以免费看黄的网站
|
亚洲精品色播一区二区
|
久久精品亚洲福利
|
最近最好最新2019中文字幕免费
|
亚洲视频在线观看免费视频
|
永久免费毛片在线播放
|
亚洲av永久无码精品网址
|
青娱乐在线视频免费观看
|
曰批全过程免费视频播放网站
|
婷婷亚洲综合一区二区
|
亚洲成A人片在线观看中文
|
国产91久久久久久久免费
|
无套内谢孕妇毛片免费看看
|
亚洲真人无码永久在线
|
无码精品A∨在线观看免费
|
亚洲日韩在线中文字幕综合
|
国产亚洲精品资在线
|
国产福利视精品永久免费
|
亚洲av成人一区二区三区在线播放
|
久久亚洲国产成人精品无码区
|
久久国产高潮流白浆免费观看
|
亚洲av片在线观看
|
久久久亚洲精品国产
|
日本黄色免费观看
|
久久这里只精品国产免费10
|