SVN,即Subversion,是一個自由開源的版本控制系統,可以將資料恢複到早期版本,或者檢查資料修改的曆史,這些資料可以是原始碼,也可以是其他類型的檔案。
在SVN出現之前,CVS是開源世界版本控制工具的事實標準,然而CVS存在一些固有的缺陷,並且修複這些缺陷需要耗費很大的精力,因此,SVN的發起者Brian Behlendorf和CollabNet決定重新編寫一個版本控制系統,保留CVS的基本思想,但要修正其中錯誤和不合理的特性。於是,SVN作為CVS的繼任者出現了。SVN的設計者們力圖通過兩方面的努力贏得CVS使用者的青睞:保持開源系統的設計以及介面風格與CVS儘可能類似,同時儘力彌補CVS許多顯著的缺陷。這些努力的結果使得從CVS遷移到SVN不需要作出重大的變革,因此越來越多的人選擇了SVN。
http://svnbook.red-bean.com
http://www.subversion.org.cn
目錄
一、用戶端的使用
1.1 Linux系統下一般使用(Ubuntu)
1.2 Windows系統下一般使用
1.3 Linux下使用SVN+ssh認證(未找到相關資料@_@)
1.4 Windows下使用SVN+ssh認證
二、伺服器端的配置
2.1 Linux下的svnserve配置
2.2 Windows下的svnserve配置
2.3 Linux下的svnserve+ssh配置
2.4 Windows下的svnserve+ssh配置(需使用Cygwin,略)
2.5 Linux下基於APache的SVN伺服器配置
2.6 Windows下基於APache的SVN伺服器配置
三、建立版本庫
3.1 Linux下建立版本庫
3.2 Windows下建立版本庫
大多數人都是從用戶端開始使用SVN,以下先介紹用戶端的使用。假設已經假設好了SVN伺服器,其檔案夾地址為http://domain/svn/trunk/myproject,使用者名稱為test,密碼為test。(如果伺服器端配置的是SVN,則使用svn://開頭的URL訪問;如果伺服器端配置的是SVN+SSH,則使用svn+ssh開頭的URL訪問)
一、用戶端的使用
1.1 Linux(Ubuntu)系統下一般使用
1)首先需要安裝svn用戶端,ubuntu下使用$sudo apt-get install subversion(其他請baigoogledu,餘同)
2)checkeout命令:第一次使用時使用checkout命令,把伺服器的目錄拷貝到本地的目前的目錄下,同時會建立一個隱藏檔案夾記錄版本資訊:
[工作目錄]$svn checkout "http://domain/svn/trunk/myproject" --username test
然後輸入密碼
3)svn update命令:擷取伺服器上的最新版本
[工作目錄]$svn update(除了第一次要加url和使用者名稱和密碼,之後系統會記住)
4)svn add命令:要把非版本控制的本地檔案添加到版本控制:
[工作目錄]$svn add hello.c
5)svn commit命令:把本地檔案上傳到伺服器
[工作目錄]$svn commit(如果有新的檔案,要首先svn add)
1.2 Windows系統下一般使用
1)安裝用戶端:http://tortoisesvn.net/downloads
2)建立一個檔案夾(工作目錄),右擊選擇checkout,填寫URL和使用者名稱密碼
3)工作目錄右鍵update
4)工作目錄右鍵add
5)工作目錄右鍵commit
1.3 Linux下使用SVN+ssh認證(未找到相關資料@_@)
1.4 Windows下使用SVN+ssh認證
(參考ubuntu下架設svn伺服器及在windows建立svn+ssh客戶)
1.4.0 安裝TortoiseSVN、Puttygen、Pageant
http://sourceforge.net/projects/tortoisesvn
http://www.chiark.greenend.org.uk/~sgtatham/putty/
1.4.1 轉換私密金鑰格式
1)將Linux下的檔案key拷貝到windows下,運行Puttygen;
2)選擇菜單conversions->Import Key;選擇檔案key,提示"Enter passphrase for key",輸入建立公私密金鑰對示使用的passphrase關鍵字;
3)選擇Parameters為“SSH-2 DSA”或“SSH-2 RSA”->Save private key->儲存檔案名稱為username>key.ppk。
1.4.2 建立TortoiseSVN與Pageant的關聯,並將私密金鑰加入Pageant:
1)滑鼠右鍵選擇TortoiseSVN->Settings->Network->SSH client,輸入:
C:Program FilesTortoiseSVNinTortoisePlink.exe
2)滑鼠右鍵選擇TortoiseSVN->RepoBrowser 輸入URL:
svn+ssh://@/usr/local/svn/trunk
3)運行Pageant,右鍵點擊螢幕右下角的表徵圖-〉Add Key,將私密金鑰檔案key.ppk加入。
——如果不想緩衝ssh密碼,則第8、9步不需要,只保留第二步,但每次check out、check in中每進入一個檔案夾都要輸入兩次密碼,煩死你:)
二、伺服器端的配置
Web伺服器部署可以有三種選擇,配置由簡單到複雜排列為
·svnserve
·svnserve over SSH
·Apache+mod_dav_svn模組
下面從最簡單的入手,介紹svnserve。
[更新]Windows下伺服器端的配置可以使用VisualSVN Server進行傻瓜化安裝。
官方網站:http://www.visualsvn.com/
參考連結:VisualSVN系列介紹(有詳細的安裝過程介紹,這裡就不轉述了)
2.1&2.2 配置svnserve
svnserve是一個輕型的伺服器,可以同用戶端通過在TCP/IP基礎上的自訂有狀態協議通訊,用戶端通過使用開頭為svn://或者svn+ssh://svnserve的URL來訪問一個svnserve伺服器。
2.1 Linux下的svnserve配置
2.1.0 同樣地,使用命令$sudo apt-get install subversion
2.1.1 svnserve作為獨立守護進程,監聽請求
$svnserve -d
$ #svnserve is now running, listening on port 3690
——可以使用--listen-port=[連接埠號碼]來指定連接埠,或者--listen-host=[主機名稱]來指定主機名稱
假定已經建立一個版本庫位於/usr/local/repositories/project路徑(版本庫的建立稍後提及), 此時用戶端可以使用svn://[主機]/usr/local/repositories/project來進行訪問
——可以使用-r選項來限制只輸出指定路徑下的版本庫,從而使用戶端訪問更為簡潔:
$svnserve -d -r /usr/local/repositories
則用戶端只要使用svn://[主機]/project就可以訪問
2.1.2 通過inetd使用svnserve
$svnserve -i
——此時svnserve會嘗試使用自訂協議通過stdin和stdout來與subversion用戶端通話,預設連接埠為3690。可以在/etc/services添加如下幾行:
svn 3690/tcp #subversion
svn 3690/udp #subversion
——如果是使用經典的類Unix的inetd守護進程,可以在/etc/inetd.conf添加如下行,則如果有客戶串連來到連接埠3690,inetd會產生一個svnserve進程來做服務
svn stream tcp nowait svnowner /usr/bin/svnserve svnserve -i
2.1.3 設定svnserve的內建認證
http://www.bkjia.com/PHPjc/486270.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/486270.htmlTechArticleSVN,即Subversion,是一個自由開源的版本控制系統,可以將資料恢複到早期版本,或者檢查資料修改的曆史,這些資料可以是原始碼,也可以...