1. 程式人生 > >ubuntu下配置svn伺服器到方法

ubuntu下配置svn伺服器到方法

本節我們講解一下Ubuntu下SVN伺服器環境配置問題,在這裡和大家分享一下,希望通過本節的學習大家能夠掌握多種SVN伺服器搭建方法。
平時的團隊開發,少不了要用一個協作工具。對於以前,無疑cvs是個無錯的選擇(像IBM的全球程式碼維護)。但是,科技在發展嗎,現在有了更好的svn了,所以直接就是svn吧。有關svn的具體資訊可以上它的官網或www.subversion.org.cn,網上關於svn的也不少,不過感覺大都出自一處,也不知道quote的人真的試過沒有。當然,學習嗎,但個人感覺學完人家的東西一定要有自己的體會。下面是我的一個簡單的配置過程。
首先,肯定是svn的安裝,這個很簡單:
sudo apt-get install subversion
sudo apt-get install libapache2-svn
(這個是和apache配合使用的,apache的安裝就不說了)
完成安裝後,給系統新增一個使用者組(如svn),把想要加入這個組的加一下(至少要把你自己加進吧)。
顯然,像程式碼維護,版本控制這種東西,肯定是cs結構的。所以下面先從svn伺服器的配置說起。
svn伺服器環境配置和簡單管理
svn伺服器端的配置主要是一個資源庫的建立,這個資源庫可以就一個,也可以是一個樹狀結構的(不建議使用森林結構)。我想建立一個test資源庫,並把它放在/usr/local/svn下(資源庫一般都放在/usr/localor/home下):
$cd /usr/local/
$sudo mkdir svn
$sudo mkdir svn/test
$sudo chown -R root:svn svn/
$sudo chmod -Rg+rws svn/

準備工作做好了,下面就是建立資源庫了:
$sudosvnadmincreate/usr/local/svn/test
好了,這樣一個資源庫就建好了,很簡單,如果你要ls/usr/local/svn/test一下,就會發現出現了一些檔案和資料夾(如,confdb等),它們的作用就不說了,去org上看吧。
別急,這時你還要做些工作
$sudo chown -R root:svn svn/
$sudo chmod -R g+rws svn/
如果沒有這個,接下來就可能會出錯,除非你是root。
還有一些好使的工具,如svnlook,svnadmin,svndumpfilter,他們涉及到svn資源庫管理的方方面面,很強大,這裡不介紹了,用的時候就查吧www.subversion.org.cn/svnbook。需要注意的是,這些管理工具的使用,後面跟的是絕對路徑,不要和下面客戶端的所使用路徑混淆。
svn客戶端的使用
Ubuntu下SVN伺服器環境配置客戶端使用,svn客戶端就是用來訪問操作資源庫資源的,它有多方式,如直接的file訪問,自帶協議的訪問,http,https等待。這裡只介紹兩種,即file直接訪問和自帶協議的訪問。
直接訪問

所謂直接訪問就是通過命令列直接對資源庫進行訪問。下面是一些例子:
我在我的家目錄下有個workspace資料夾,下面有個用eclipse建立的簡單工程叫com.sun.yangsq。我想把他維護到資源庫中
$cd workspace
$svn import com.sun.yangsqfile:///usr/local/svn/test/com.sun.yangsq/trunk -m"testimport"
這樣,這個工程就被import到資源庫了。
如果想檢視一下資源庫的資訊,可以使用
$svn listfile:///usr/local/svn/test/
如果想檢視log資訊,可以使用
$svn logfile:///usr/local/svn/test/
此外,svn還有好多的命令可以使用,如checkout(co),diff,move,delete,add等等,上網查去吧。
自帶協議(svn://)的使用subversion自帶了一種訪問協議,很好用。但是,如果要使用這種協議,需要啟動svnserve,這也很簡單,如下:
本節我們講解一下Ubuntu下SVN伺服器環境配置問題,在這裡和大家分享一下,希望通過本節的學習大家能夠掌握多種SVN伺服器搭建方法。
平時的團隊開發,少不了要用一個協作工具。對於以前,無疑cvs是個無錯的選擇(像IBM的全球程式碼維護)。但是,科技在發展嗎,現在有了更好的svn了,所以直接就是svn吧。有關svn的具體資訊可以上它的官網或www.subversion.org.cn,網上關於svn的也不少,不過感覺大都出自一處,也不知道quote的人真的試過沒有。當然,學習嗎,但個人感覺學完人家的東西一定要有自己的體會。下面是我的一個簡單的配置過程。
首先,肯定是svn的安裝,這個很簡單:
sudoapt-getinstallsubversion
sudoapt-getinstalllibapache2-svn(這個是和apache配合使用的,apache的安裝就不說了)
完成安裝後,給系統新增一個使用者組(如svn),把想要加入這個組的加一下(至少要把你自己加進吧)。
顯然,像程式碼維護,版本控制這種東西,肯定是cs結構的。所以下面先從svn伺服器的配置說起。
svn伺服器環境配置和簡單管理
svn伺服器端的配置主要是一個資源庫的建立,這個資源庫可以就一個,也可以是一個樹狀結構的(不建議使用森林結構)。我想建立一個test資源庫,並把它放在/usr/local/svn下(資源庫一般都放在/usr/localor/home下):
$cd/usr/local/
$sudomkdirsvn
$sudomkdirsvn/test
$sudochown-Rroot:svnsvn/
$sudochmod-Rg+rwssvn/
準備工作做好了,下面就是建立資源庫了:
$sudosvnadmincreate/usr/local/svn/test
好了,這樣一個資源庫就建好了,很簡單,如果你要ls/usr/local/svn/test一下,就會發現出現了一些檔案和資料夾(如,confdb等),它們的作用就不說了,去org上看吧。
別急,這時你還要做些工作
$sudochown-Rroot:svnsvn/
$sudochmod-Rg+rwssvn/
如果沒有這個,接下來就可能會出錯,除非你是root。
還有一些好使的工具,如svnlook,svnadmin,svndumpfilter,他們涉及到svn資源庫管理的方方面面,很強大,這裡不介紹了,用的時候就查吧www.subversion.org.cn/svnbook。需要注意的是,這些管理工具的使用,後面跟的是絕對路徑,不要和下面客戶端的所使用路徑混淆。
svn客戶端的使用
Ubuntu下SVN伺服器環境配置客戶端使用,svn客戶端就是用來訪問操作資源庫資源的,它有多方式,如直接的file訪問,自帶協議的訪問,http,https等待。這裡只介紹兩種,即file直接訪問和自帶協議的訪問。
直接訪問
所謂直接訪問就是通過命令列直接對資源庫進行訪問。下面是一些例子:
我在我的家目錄下有個workspace資料夾,下面有個用eclipse建立的簡單工程叫com.sun.yangsq。我想把他維護到資源庫中
$cd workspace
$svn import com.sun.yangsqfile:///usr/local/svn/test/com.sun.yangsq/trunk-m"testimport"
這樣,這個工程就被import到資源庫了。
如果想檢視一下資源庫的資訊,可以使用
$svn listfile:///usr/local/svn/test/
如果想檢視log資訊,可以使用
$svn logfile:///usr/local/svn/test/
此外,svn還有好多的命令可以使用,如checkout(co),diff,move,delete,add等等,上網查去吧。
自帶協議(svn://)的使用subversion自帶了一種訪問協議,很好用。但是,如果要使用這種協議,需要啟動svnserve,這也很簡單,如下:
$svn serve-d這樣就把本地的所有資源發到了網上,預設3690埠。訪問時使用的路徑如:
svn://ip/usr/local/svn/test/.....(這個ip不用帶埠)
如果只想釋出某個資源,可以使用
$svnserve-d-r/usr/local/svn/test
訪問時使用的路徑如:svn://ip/com.sun.yangsq如果要checkout,可以$svncheckoutsvn://ip/com.sun.yangsq
需要注意的是,客戶端在使用類似svn,http://這種網路協議訪問資源時(即通過svnserve程序),會通過一定的許可權驗證,這種驗證是通過資源的一些配置檔案設定的。如在本例中,這些配置檔案放在了/usr/local/svn/test/conf/下,包括三個authz,passwd,svnserve.conf。這三個檔案的配置就不詳談了。另外的幾種客戶端方式如http也不介紹了,svnbook上去看,都有。
如果想通過網路方式,即svn,http等訪問(推薦使用這種方式,而不是file://方式),必須要把svnserve程序啟動,如果你不小心把機器重新啟動了,一定要手動把它再啟動一邊。svn確實很好使,eclipse也有它的外掛(叫sublipse),很方便。Ubuntu下SVN伺服器環境配置本節講解完畢。這樣就把本地的所有資源發到了網上,預設3690埠。訪問時使用的路徑如:
svn://ip/usr/local/svn/test/.....(這個ip不用帶埠)
如果只想釋出某個資源,可以使用
$svnserve-d-r/usr/local/svn/test
訪問時使用的路徑如:svn://ip/com.sun.yangsq如果要checkout,可以$svncheckoutsvn://ip/com.sun.yangsq
需要注意的是,客戶端在使用類似svn,http://這種網路協議訪問資源時(即通過svnserve程序),會通過一定的許可權驗證,這種驗證是通過資源的一些配置檔案設定的。如在本例中,這些配置檔案放在了/usr/local/svn/test/conf/下,包括三個authz,passwd,svnserve.conf。這三個檔案的配置就不詳談了。另外的幾種客戶端方式如http也不介紹了,svnbook上去看,都有。

如果想通過網路方式,即svn,http等訪問(推薦使用這種方式,而不是file://方式),必須要把svnserve程序啟動,如果你不小心把機器重新啟動了,一定要手動把它再啟動一邊。svn確實很好使,eclipse也有它的外掛(叫sublipse),很方便。Ubuntu下SVN伺服器環境配置本節講解完畢。

------------------------------------------------------------------------------------------------------

今天重新安裝了Visual SVN Server,把已有的Repository入後,重新check out一資料倉庫,結果在提交的時候出現以下錯誤: Error: Can’t open ‘/home/svn/db/txn-current-lock’: 拒絕訪問  在網上搜了好多資料,都說是許可權的問題。 “這 種錯誤比較常見,而且一開始我一直以為是自己沒有配置好認證許可權的問題,我反覆的配置10,11兩步,結果還是沒解決,我在windows下用 tortoiseSVN客戶端一直無法commit和新增檔案,老是彈出這個錯誤。可我在linux下可以用 #svn import …. 這個命令,我一直很納悶,後來經過琢磨和上網搜尋,終於解決。問題在於我的/home/svn目錄下的一切子目錄和檔案都是屬於root使用者的,而我每次 在linux下也是以root 使用者import的,所以一直沒有問題。可在windows從客戶端訪問就有問題了。 解決辦法: 把/home/svn目錄下的所有檔案和子目錄新增讀寫許可權 #chmod –R o+rw /home/svn Okay, 問題解決。現在可以方便從windows下面checkout和commit了。”     這是網上找到資料,因為我的環境就是windows下的,後來折騰了半天,發現是隻有擁有管理器許可權的人才能對目錄Repository進行完全控制,而在windows從客戶端訪問的話因為是Users使用者組的,對Repository沒有修改許可權。  在伺服器上把Users對Repository的完全控制權限加上就OK了。