雖然Git比SVN強大,已經統治了代碼管理領域,但Git是具有一定門檻的,對非開發者來說並不那么友好。相對來說,SVN雖然功能沒那么強悍,但是服務端搭建簡單、客戶端操作門檻低,文件管理對大多數普通用戶來說已經夠用,因此還是有一定的生存空間的。
SVN服務端“VisualSVN Server”下載地址:https://www.visualsvn.com/server/download/
SVN客戶端TortoiseSVN下載地址:https://tortoisesvn.net/downloads.html
一、安裝服務端
首先安裝VisualSVN Server,沒什么好講的因為都是無腦下一步,頂多改下倉庫根目錄和端口號。至於HTTP還是HTTPS,看個人喜好吧。
安裝完之后從開始菜單找到VisualSVN Server Manager,里面可以增刪倉庫、管理用戶、用戶組及訪問權限。
這就算搭建好了,新建一個倉庫和一個用戶,再在倉庫上分配Read/Write權限給該用戶即可。
然后就可以通過地址:http://ip/svn/倉庫名 訪問倉庫了。
客戶端小烏龜的使用不在本文描述范圍,網上都說爛了。
二、備份方案
網上有很多種備份方案,各種腳本、步驟,搞得很復雜。我只推薦以下方案,快速、簡單、暴力!
備份:
svnadmin hotcopy E:\SVN\Repositories\xxx E:\backup\xxx
還原(可直接用VisualSvn import):
svnadmin hotcopy E:\backup\xxx E:\SVN\Repositories\xxx
對多個倉庫備份可分別執行。
三、多服務器同步方案
本文以一台主服務器一台備份服務器為例。
1、假設你已經在主服務器有了一個倉庫A,並且已經運行了很久,想復制到備份服務器。最好兩台服務器上都建一個備份用戶,給予讀寫權限,用相同賬號密碼,方便。
2、使用hotcopy進行備份,並將其拷貝到備份服務器的任意臨時文件夾(非必須,只是不拷貝的話第一次直接進行同步的話會非常慢)
3、在備份服務器創建A的同名倉庫
4、如有Hotcopy備份,用它覆蓋該倉庫的所有文件;
5、改Hook -> Pre-revp-change值為以下內容:
echo "Changing revision pp other than svn:log is prohibited" >&2 exit 0
6、打開命令行工具,初始化A倉庫
//替換為你自己的倉庫路徑 svnsync init file:///E:\Repositories\A http://主服務器/svn/A --username 賬號 --password 密碼 //如果你是用hotcopy覆蓋的,用下面的這個 svnsync --allow-non-empty init file:///E:\Repositories\A http://主服務器/svn/A --username 賬號 --password 密碼 |
成功后執行以下代碼進行同步,到此備份結束,以后要手動同步都只執行它:
svnsync sync file:///E:\Repositories\A
注意這個命令是一次性的,每次想同步都要執行一次。如有多個倉庫直接寫個批處理.bat就好。
7、當然,如果備份服務器想實時同步,需要在主服務器上改Hook post-commit:
svnsync sync --non-interactive http://備份倉庫地址/svn/備份倉庫路徑 --username 賬號 --password 密碼
收工。