本文主要講解Linux搭建SVN服務器,希望對大家的學習有所幫助。 因爲現在在公司用到這個svn高大上工具,很方便管理一個部門所有人統一查看文件和共享,可以在線更新文檔上.所以在這裏我就很詳細給大家操作搭建下服務以及使用。
1、什麼是SVN(subversion)
什麼是svn呢?簡單的說,您可以把svn當作你的備份服務器,更好的是,他可以幫助您記住你共享文件和創建文件每次上傳到這個服務器的檔案內容。並且自動的賦予每次的變更一個版本。
2、爲什麼要用SVN
(1). 備份工作檔案的重要性,你永遠不知道自己的計算機的硬盤何時會壞掉,如果你負責一個公司的整理運維,你應該很多公司內部資料和工作文件,根據經驗法在加上墨菲定律,壞事情往往都發生在最關鍵也是最重要的時刻。例如:你要release 東西的時候前一刻,硬盤完全壞掉了,無法修復,所以常常備份工作數據是非常重要的。因爲我現在在的公司也有這個專門備份機制,甚至異地備援,比放在自己的計算機上面,或者隨身攜帶的U盤上面安全。
(2). 版本控管的重要性。您無法保證手頭上最新版本永遠都是對的。很多時候,在經過數天努力工作後,您才發現走錯方向。需要將所有的修改回覆到數天前版本。沒有幾個人能夠完全記住自己修改過什麼東西。如果沒有做好版本控管,那麼,最差的狀況就是要全部重來。
(3). 夥伴間的數據同步的重要性。 很多時候,除了您個人外,還有其它的夥伴也需要您的工作和學習檔案。怎麼把最新的檔案提供給夥伴呢?用e-mail?根據經驗,用e-mail是一個很差的辦法。到了最後,根本就不知道哪一封e-mail纔是新的。因爲可能您最新的e-mail已經被當成垃圾信給丟了。別忘了,現在很多e-mail軟件都有anti-spam(反垃圾郵件)的功能,說不定這些信件都被當成廣告信給處理掉了。而且,您也應該知道一般檔案如果放在e-mail內,檔案大小會變得比較大(通常是原來的4/3倍以上)。如果每天更新一次,恐怕幾天沒收信的話,信箱就爆了!
(4). SVN有很棒的版本控管機制。所有上傳的版本都會幫您記錄下來。日後您可以隨時取得某一個時刻的版本。而且,也有版本分支及合併等好用的功能。
SVN可以讓不同的開發者存取同樣的檔案,並且利用SVN Server作爲檔案同步的機制。也就是說,您有檔案更新時,無須將檔案寄給您的開發成員。只需要告訴他新的版本已經在SVN Server上面,請他自己去SVN Server上面就可以取得最新版本。而且,SVN Server也可以做到當您上傳新版本後,自動發信給相關的成員。
SVN的存放檔案方式是採用差異備份的方式。也就是說,他只會備份有不同的地方。所以很省硬盤空間。此外,他也可以針對所謂的非文字文件進行差異備份.
------------------------------------------------------------------------------------------
好啦,上面講的都是svn概念和爲什麼使用svn,下面我們開始搭建。
我這裏用的是centos 6.5 (7.1)我現在也搭建過,也可以的,沒有版本要求,都可以實現,
這裏有兩種安裝方式。
svn服務端安裝:
1. 安裝svn下載地址
官網下載:http://subversion.apache.org/packages.html
SVN客戶端:TortoiseSVN,官網下載:http://tortoisesvn.net/downloads.html
2. yum 安裝也可以的 (subversion)
yum install -y subversion 這裏安裝可以看到 如下圖:
3. 輸入rpm -ql subversion查看安裝位置,如下圖:
我們知道svn在bin目錄下生成了幾個二進制文件。
4.創建svn版本庫目錄
mkdir -p /var/svn/svnrepos
5.創建svn版本庫
svnadmin create /var/svn/svnrepos //這裏的文件目錄自己隨便設置
執行了這個命令之後會在/var/svn/svnrepos目錄下生成如下這些文件,如圖可以看到:
6.進入conf目錄(該svn版本庫配置文件)
authz文件是權限控制文件
passwd 是帳號密碼文件
svnserve.conf SVN服務配置文件
7.進入conf目錄下面該svn版本配置文件
authz 文件是權限控制文件
passwd 是帳號密碼文件
svnserve.conf svn服務器配置文件
8. 這裏我做第一步設置賬號,
vim passwd
可以看到如圖
這裏我在users 下面設置了個賬號 和密碼 格式:賬號=密碼 這裏的密碼是明文的。
9. 設置權限
vi authz
在末尾添加如下命令代碼:
[/]
cheng=rw
w=r
意思是版本庫的根目錄dan對其有讀寫權限,w只有讀權限。
這裏*=rw的話 SVN客戶端解決authorization failed問題。
10. 修改svnserve.conf文件
vim svnserve.conf
打開下面的幾個註釋:
anon-access = read #匿名用戶可讀
auth-access = write #授權用戶可寫
password-db = passwd #使用哪個文件作爲賬號文件
authz-db = authz #使用哪個文件作爲權限文件
realm = /var/svn/svnrepos # 認證空間名,版本庫所在目錄
ps:很多同學會弄錯一個東西, 修改svnserve.conf 文件時。解開註釋時要注意,同時要刪除#後面的空格。也就是說要全部頂置。
然後認證失敗是要注意前面的[/]. 然後重啓下SVN就好了 ,不會重啓的 reboot吧
11.這裏安裝配置好啓動svn版本庫就行了。
svnserve -d -r /var/svn/svnrepos
注意:不要使用系統提供的 /etc/init.d/svnserve start 來啓動,因爲系統默認的啓動腳本中沒有使用 –r /svn/project參數指定一個資源。這種情況下啓動的svn服務,客戶端連接會提示“svn: No repository found in 'svn://192.168.11.229/project' ”這樣的錯誤。
如果已經有svn在運行,可以換一個端口運行
svnserve -d -r /var/svn/svnrepos --listen-port 3391 #這裏一般都是默認3390
這樣同一臺服務器可以運行多個svnserver
或用下邊的命令殺死進程
netstat -ntlp
kill -9 id 可以了
客戶端使用:
客戶端用svn或者windows下的TortoiseSVN客戶端
這裏我已經下載好的,你們可以用我這個,或者去官方網站下載。
百度雲: http://pan.baidu.com/s/1hqHGiLA
10、在windows上測試
新建一個測試文件夾,在該文件夾下右鍵選擇 SVN checkout如下圖(要事先安裝TortoiseSVN):
填寫SVN的地址,如下圖:
輸入密碼,如下圖:
這裏說明一點:
linux svn服務器上的文件保存在哪?
svn有兩種存儲方式:BDB和FSFS,目前用的最多的是FSFS方式,這種方式的話,一般是存儲在\db\revs文件夾下,裏面有一堆以版本號命名的文件,如:0、1、2、3、4......,那個就是了例如:/var/svn/svnrepos/db/revs/var/svn/svnrepos/是svn版本庫目錄db/revs/存儲的svn上傳文件等的目錄[root@master revs]# pwd
/var/svn/svnrepos/db/revs[root@master revs]# ll總用量 4
drwxr-sr-x. 2 root root 4096 11月 5 14:43 0
[root@master 0]# pwd
/var/svn/svnrepos/db/revs/00是第0個版本的目錄
[root@master 0]# ll
總用量 5128
-rw-r--r--. 1 root root 115 11月 4 17:22 0
-rw-r--r--. 1 root root 284 11月 5 13:28 1
-rw-r--r--. 1 root root 620 11月 5 13:30 2
-rw-r--r--. 1 root root 5228784 11月 5 14:04 3
-rw-r--r--. 1 root root 1451 11月 5 14:42 4