1. 程式人生 > >專案總結——也談svn版本庫遷移

專案總結——也談svn版本庫遷移

【一.引言】

看了很多的關於svn版本庫遷移的部落格,寫的都挺好的。但在自己實踐的過程中還是沒有那一篇能讓我不查別的東西的。也就是說網上什麼都有但是自己用的時候還需要查好多的東西。算是做筆記吧。方便我也方便其他將要使用svn版本遷移的人,我對這裡涉及到的一些知識點再做一點總結。

首先是說一下svn中常用的一些命令。當然下面的命令都可以在命令視窗敲上svn helpsvnadminhelp看到,這裡只不過是一些對這些命令的一些解釋。

如題說的主要是svn版本庫遷移,當然也主要的介紹關於遷移所用的一些命令。

【二.基本思路】


要實現版本庫的無縫遷移,必須通過以下
3個步驟:

①匯出舊的版本庫

②匯入新的版本庫

③通知客戶端切換版本庫分支

首先來看第一步:匯出舊的版本庫。我們知道SVN提供了checkout命令和export命令簽出,匯出版本庫中的內容。對於版本庫內容比較少的情況這種方法可以採用。但是如果版本庫中內容比較多,那麼這種方法就顯得很笨重了,而且還涉及到版本號改變的問題。所以首先擯棄這種做法。

我們知道Oracle提供了export/import命令來將資料庫匯出成一個二進位制檔案,然後匯入。同樣的SVN也提供了一對命令:dump和load。不同的是這兩個命令匯出的是文字內容(肉眼可以讀懂)。而且還有一次性匯出和增量匯出,單版本匯出與多版本匯出等多種選擇操作,就是這個了。

其次我們來看“通知客戶端切換版本庫分支”。在我們完成伺服器端的版本遷移之後,必須通知客戶端執行切換分支的命令,否則客戶端的提交還是提交到舊的版本庫去。SVN也為我們準備了這樣的命令:svnswitch。

【三.相關命令】

1.dump命令:

首先需要備份資料庫當然是需要把svn中所有的版本資訊匯出來。也就是備份版本庫,這時我們需要的命令是dump命令:

說明:

svnadmin dump — 將檔案系統的內容轉儲到標準輸出。

通俗語法:

svnadmin dump 版本庫檔案及目錄 > 備份檔案及目錄

如在命令視窗輸入:

svnadmindumpF:\Repositories\Library

> E:\Library.svn_dump

這樣就會到處你的library專案的版本庫備份檔案到E盤的library.svn_dump檔案中。其中svnadmindump不會保留修改檔案的所有內容,而只是記錄修改的部分。這樣減少(有些情況下是非常大的)了svnadmin dump產生的轉儲檔案的大小。

官方的說法及引數:

svnadmindumpREPOS_PATH[-rLOWER[:UPPER]][--incremental]

svnadmindump命令用於匯出整個Repository或Repository下的某個範圍的修訂版本。REPOS_PATH是版本庫的路徑,[-rLOWER[:UPPER]]用於指定匯出的修訂版本範圍,由引數-r和兩個用:號隔開阿拉伯數字組成。例如:-r0:50表示匯出才版本0到版本50之間的所有修訂版,-r是revision的縮寫。

而另一個關鍵引數是--incremental。它使用增量方式來匯出版本,即每次都只匯出自上一個版本以來的修改。這樣的好處是第一:可以把一個大的檔案切分成若干個小的檔案。第二:在版本庫已經存在的情況下,我們只需要每次匯出修改的部分,不需要每次都匯出整個版本庫的內容。甚至可以通過hook指令碼每天晚上自動將當天的修改dump出來做備份用。

例項:

匯出Library版本庫的0-50個版本(當然你也可以匯出剩下的版本)

     

當然如果匯出剩下的版本匯出命令多了一個--incremental的引數,這就是採用了增量的方式匯出,匯入時只需要按順序匯入即可。

2.load命令:

匯出版本庫檔案以後我們當然要把匯出的檔案再次匯入才能說是完成備份。

說明:

svnadmin load — 從標準輸出讀取

通俗語法:

svnadmin load 新的版本庫名稱及目錄備份檔案及目錄

如在命令視窗輸入:

svnadmin load F:\Repositories\Library2 --parent-dir 專案1 < E:\Library.svn_dump

這樣就會把已近備份到E盤的library.svn_dump檔案重新匯入到Library2版本庫下的專案1資料夾。如果想直接匯入到Library2中則沒有中間的"--parent-dir 專案1"版本庫下的目錄都必須寫在dir引數後。

例項:

匯入Library版本庫的0-50個版本(當然你也可以匯入剩下的版本)

          

注意:

當然如果匯出Library剩下的版本匯出命令多了一個--incremental的引數,這就是採用了增量的方式匯出,匯入時只需要按順序匯入即可。

3.svnlook youngest命令和svninfo命令

匯出版本庫時如果是匯出指定版本的版本庫,那麼首先是必須要知道庫中一共有多少個版本的。

當我們需要進行版本遷移的時候我們必須要知道當前檔案的條目資訊,

說明:

svnlook youngest — 顯示最年輕的修訂版本號。

svninfo — 顯示本地或遠端條目的資訊。

例項:

顯示Library版本庫最年輕的修訂版本號(注意:首先要到庫目錄下


顯示check out下來的檔案的遠端條目資訊(注意:首先要到檔案的存放目錄下,本檔案放在E:\Library檔案下。


4.svnswitch命令語法

 svnswitch命令用於更新工作副本的URL。意即指向新的版本庫位置。首先要注意的一點是我們即可以將整個工作副本指向新的URL,也可將工作副本下的某個目錄指向新的URL。

說明:

svn switch — 將工作轉向一個其他的庫地址同步

通俗語法:

         svn switch --relocate舊版本庫地址新版本庫地址(中間有空格)

官方的說法及引數:

    svnswitchURL[PATH]

switch--relocateFROMTO[PATH]

svnswitch命令用於更新工作副本的URL。意即指向新的版本庫位置。首先要注意的一點是我們即可以將整個工作副本指向新的URL,也可將工作副本下的某個目錄指向新的URL。

另外一個重要的引數就是--relocate。這個引數是否使用對於結果如何有很大影響,使用不當甚至可能會造成版本庫不可用。其中有兩條重要的規則:

A.假如工作副本只是對映到同一個版本庫內的不同位置,那麼使用svn switch即可

B.假如工作副本已是對映到不同的版本庫,那麼必須使用svn switch --relocate

上面第二條規則通常發生在我們需要將整個版本庫遷移到另外一臺機,或者同一臺機的不同版本庫時。這個時候使用--relocate會重新整理原有工作副本中每個檔案的URL頭部。

例項:

遷移前後檢視工作檔案的遠端條目資訊是不同的。


【四.擴充套件】

當然命令視窗操作svn的命令不止有折幾個,以上列出的只是版本遷移中用到的幾個基本命令,有興趣的朋友還可以查一下相關的資料。

【五.總結】

這篇部落格的技術含量其實不高,但是對於從繁雜的知識中選出自己能用的知識來說,是一種鍛鍊,把用過的知識總結起來,慢慢才會成為自己拿來就用的東西。


相關推薦

專案總結——svn版本遷移

【一.引言】 看了很多的關於svn版本庫遷移的部落格,寫的都挺好的。但在自己實踐的過程中還是沒有那一篇能讓我不查別的東西的。也就是說網上什麼都有但是自己用的時候還需要查好多的東西。算是做筆記吧。方便

svn版本遷移

同一個svn下有兩個版本庫:fundability、bj,想把fundability裡的內容帶資訊遷移至bj/fap目錄下 svn的dump命令命令可將版本庫(注意是以版本庫為單位,貌似不能對單個目錄進行操作)從第a次提交至第b次提交的所有相關資訊匯出成dump檔案,dump檔案中記

SVN版本遷移到Gerrit中

第一步,根據專案需求,確定是否需要做版本庫的分割,即把一個SVN的專案分割為多個Gerrit project,在Git中實現類似與SVN中按目錄checkout的功能,非常不自然。因此第一步,需要從專案管理的角度,按照工程之間的依賴性,規劃好版本庫的分割。 第二步,實現在S

SVN版本遷移

1:經過SVN搭建,許可權配置和強制寫日誌的工作之後,今天的任務是把原來其它分散的各個版本庫統一遷移到新的版本庫,集中統一管理。要求不改變原有的版本庫的內容和版本號。2:要實現版本庫的無縫遷移,必須通過以下3個步驟: ①匯出舊的版本庫 ②匯入新的版本庫 ③通知客戶端切換版本庫

svn版本的拆分及遷移子目錄等

需求 庫的改名 庫A匯入到庫B 庫A的子目錄匯入到庫B 庫A的子目錄匯入到庫B的子目錄svnadmin dump 此工具只執行在伺服器上 檢視最新版本 svnlook youngest /var/svn/A# X+ J. V# s* c% Y& c 1 P&a

SVN版本修改URL路徑或者IP地址

mac 目錄 win linux 右鍵 window 服務 安裝 tortoise 服務器的IP地址或者URL變更,版本庫服務器的IP也要修改,因為當初安裝SVN URL沒有使用別名,所以使用的人都要修改客戶端的IP,以下是參考網上的資料。 1、Windows Tortoi

專案(七)SVN版本管理與大型程式碼上線方案

  SVN介紹 Svn(subversion)是近年來崛起的非常優秀的版本管理工具,與CVS管理工具一樣,SVN是一個跨平臺的開源的版本控制系統。Svn版本管理工具管理著隨時間改變的各種資料。這些資料放置在一箇中央資料檔案庫(repository)中,這個檔案庫很像一個普通的檔案伺

SVN版本搭建

1:安裝svn服務端  yum install subversion 2:建立版本庫:  svnadmin create /home/svn/myrepos  //目錄可以自定義 3:配置svnserve   上述版本庫/home/myrepo

阿里雲伺服器搭建svn版本

搭建和使用SVN 前言 Subversion(SVN) 是一個開源的版本控制系統, 也就是說 Subversion 管理著隨時間改變的資料。 這些資料放置在一箇中央資料檔案庫(repository) 中。這個檔案庫很像一個普通的檔案伺服器, 不過它會記住每一次檔案的變動。這樣您就

伺服器上的Svn 版本備份與還原

伺服器上的Svn 版本庫備份與還原                      

svn版本衝突的解決方法

(1)合理分配專案開發時間 譬如: 甲:上午開發 乙:下午開發 (2)合理分配專案開發模組,為每個人分配單獨的模組 譬如: 甲:負責開發購物車模組 乙:負責開發文章模組 (3)通過SVN解決版本衝突問題             (1)更新伺服器端資料到本地        

Release版本排錯

通常Release除錯都是先通過SetUnhandledExceptionFilter捕獲異常,然後生成報告檔案,最後定位程式碼行,主要以下兩種方法: (一)通過遍歷呼叫棧,將其呼叫棧資訊輸出到檔案。然後查找出錯地址。 查詢方式有兩種: (1)通過編譯器生成的包含行資訊的map檔案定位出錯位置。

svn程式碼遷移到另一臺伺服器

由於伺服器更換或其他原因,有時候我們需要遷移 SVN程式碼庫到另一臺伺服器,但是版本操作記錄不能丟失。 操作步驟: 1.在原始SVN伺服器上找到VisualSVN Server的安裝目錄下的bin資料夾,在命令列中切換至該路徑。 2.在命令列中輸入sanadmin dump

linux上搭建svn版本

svn配置 mount /dev/cdrom /media/cdrom 掛載光碟機 1.安裝svn伺服器端 yum install subversion 從映象下載安裝svn伺服器端 cd /usr/local/ //進入目錄,準備建立svn目錄 mkdir svn //建

Android視訊播放專案總結之 使用第三方Vitamio,開發萬能播放器(三)

前言   雖然Android已經內建了VideoView元件和MediaPlayer類來支援開發視訊播放器,但支援格式、效能等各方面都十分有限,這裡與大家一起利用開源專案Vitamio來打造屬於自

SVN版本實時備份整理

        因為公司最近SVN伺服器的檔案特別多,資料量很大,有500g,而用於備份的外接磁碟除了故障,因此需要在這段時間對svn伺服器上的資料做備份,所以特地研究了下svn庫的備份,因為平時不怎

VisualSVN跨版本遷移目錄(保留日誌)

參考文獻:SVN跨版本庫遷移目錄並保留提交日誌 真的非常感謝這位作者,寫得很好,簡單易懂,終於把版本庫轉移的問題解決了。 關鍵字:VisualSVN 跨版本庫遷移目錄保留日誌 整理需要遷移的目錄路徑對應表 目標:把“\PROG1”整個目錄及檔案遷移到“專案1\程式

IntelliJ idea 如何配置svn,怎麼檢出,更新,提交專案,怎麼檢視版本

更多IntelliJ IDEA 的操作請參考:https://blog.csdn.net/qq_33442160 本文主要介紹在IntelliJ idea 下如何使用及配置svn. 1. 安裝sv

SVN如何將版本url訪問地址中的https改為http

ima svn 面板 連接 協議 版本 nbsp .com 控制臺 1、選擇控制臺樹中的根節點,右鍵選擇“屬性”。 2、切換至面板“網絡”。 3、取消勾選項“使用安全連接協議(https://)”。 SVN如何將版本庫url訪問地址中的https改為http

subversion多版本及導入導出相關遷移

svn subversion visualsvn subversion在實際項目研發中被大量的應用,但是往往在實際的環境中大多數的人還僅僅把SVN僅用於創建一個SVN庫,當然在subversion也是支持一個SVN服務多個版本庫的,最近剛剛好在做SVN的跨系統平臺遷移工作,就此就簡單的說一說