1.SVN簡介
由於前些年在版本的管理上採用的都是CVS系統,總體上而言還是很優秀的,經過了多年
的項目開發管理經歷,在使用CVS系統在管理中大型的軟件項目時還是遇到了很多不可克服的
缺陷和局限性,主要表現在如下的幾個方向:
1. 無法進行文件名稱的修改活動,這樣一來就會導致必須先刪除該文件再上傳,丟失了
歷史信息,要不就必須到服務上將xxx,v文件進行改名(我採用這種方法,不過總是
找管理員太不方便了);
2. 目錄名稱沒有被管理,這樣就不能進行改名等動作,其實項目的目錄結構對於項目的
成功起了非常重要的作用,每次也只能到服務器上進行修改;
3. 項目的分支代價太高,需要對每一個文件都進行標記,對於大的項目耗時太長,並且
基本上不能刪除廢棄了的分支和標記,因為那樣很容易導致項目倉庫的損壞,我就遇
到了好多次這種讓人發狂的情況;
4. 對於文件二進制和文本的處理經常會出現混亂,結果就使將二進制文件當作文本上傳
後內容被擴展導致丟失,因為有些時候二進制文件的擴展名和某些文本文件的擴展名
相同了,所以導致CVS識別就會出錯。
可以安裝並配置subversion(簡稱svn)系統,使用svn來替換CVS系統,以解決上述問題。
Subversion有兩種運行方式,一種是基於Apache Http Server,另外一種是Subversion Standalone Server。下面我講解的是基於Apache Http Server的Subversion,這樣做幾個好處
A.能使用WebDAV協議。
B.能使用瀏覽器作為客戶端工具瀏覽源碼倉庫。
C.可以很容易的支持到SSPI(Windows域認證)和LDAP(AD?),這些都是Apache本身就支持的。
D.能得到比較完善的Apache安全認證系統,比如SSL加密連接。
2.svn安裝
安裝系統:CentOS
安裝方式:yum install(這種方式比較簡單,如果用源碼安裝容易產生版本兼容的問題)
建議:
最好將svn系統安裝在Linux操作系統環境下,這樣一來系統比較的穩定可靠,同時也可以減少很多的病毒和攻擊的服務器日常維護工作量,我將svn安裝在了CentOS的服務器版本下。
安裝:
yum install httpd httpd-devel subversion mod_dav_svn mod_auth_mysql
確定已經安裝了svn模塊:mod_dav_svn
#cd /etc/httpd/modules
#ls | grep svn
mod_authz_svn.so
mod_dav_svn.so
如果要確認是否成功的安裝了svn可以通過如下的命令進行驗證: svn --version
svn, 版本 1.6.11 (r934486)
編譯於 Jun 8 2011, 16:21:54
Copyright (C) 2000-2009 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).
可使用以下的檔案庫存取 (RA) 模組:
* ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
- handles 'http' scheme
- handles 'https' scheme
* ra_svn : Module for accessing a repository using the svn network protocol.
- with Cyrus SASL authentication
- handles 'svn' scheme
* ra_local : Module for accessing a repository on local disk.
- handles 'file' scheme
3.apache的配置
配置/etc/httpd/conf/httpd.conf
(httpd的安裝目錄,一般是/etc/httpd或/usr/local/appache2)
進入到/etc/conf目錄下用vim打開httpd.conf配置文件進行選項的修改:
a. KeepAlive選項(可選)
該選項可以修改也可以不修改,主要是為了提高http協議訪問的性能,可以
使得svn倉庫的訪問更快,KeepAlive表示可以保持http的永久性TCP連接,
省去了每次都需要進行重建TCP連接的巨大開銷,找到如下幾個選項並修改:
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
b. ServerAdmin/ServerName選項(可選)
對於需要對系統進行管理的可以在ServerAdmin選項設置成為管理員的email
地址,這樣在出現問題時apache會自動發送郵件到該地址中;而ServerName
必須設置為本服務器的域名,如xxx.xxx.cn:80。
為了使客戶端能夠通過Apache來訪問SVN檔案庫,Apache需要加載一個特殊的模塊mod_dav_svn。如果您的Apache是按照與預設目錄安裝的,mod_dav_svn 模塊應該會安裝在 Apache 安裝位置 (默認路徑是 /usr/local/apache2) 的 modules 子目錄內。同時在Apache的配置文件httpd.conf(默認路徑為/usr/local/apache2/conf)中已經使用LoadModule指令加載了該模塊(如果沒有,請手動添加)LoadModule 指令的語法很簡單, 就是將一個具名模塊對映到共享鏈接庫在磁盤上的位置:
LoadModule dav_svn_module modules/mod_dav_svn.so
注意這個指令必須出現在其它的 Subversion 相關指令之前。
還要加載mod_authz_svn.so模塊
LoadModule authz_svn_module modules/mod_authz_svn.so
如圖:

測試Apache是否可以正常啟動:
#vim /etc/httpd/conf/httpd.conf -- Edit what you need and save the file
#/etc/init.d/httpd start
#chkconfig httpd on
在瀏覽器中訪問:http://localhost, 如果能看到Apache的頁面,則說明Apache已經正常啟動。
Apache命令:
啟動:/etc/init.d/httpd start
關閉:/etc/init.d/httpd stop
重啟:/etc/init.d/httpd restart
查看日誌:tail -f /etc/httpd/logs/error-log
4.svn的配置
進入到/etc/httpd/conf.d目錄下用vim打開subversion.conf配置文件進行選項的
修改:
a. module的配置
一定要保證下面的兩句話存在於配置文件中,否則無法在如svn的模塊,就
無法訪問svn的倉庫了:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so b. 倉庫目錄配置
項目倉庫就是用於存放項目目錄結構的服務器目錄,一般情況下Linux的規則時間容易變化的內容存放在/var目錄下,所以我們需要在/var目錄下創建一個svn目錄,這樣所有的項目的根目錄都作為/var/svn/目錄下的一級子目錄了,這樣以來就可以在一個倉庫目錄下存放多個項目了。
下面將使用myapp這個倉庫來配置Subversion # mkdir -p /var/svn
# cd /var/svn
# svnadmin create myapp
# chown -R apache.apache myapp
# vi /etc/httpd/conf.d/subversion.conf 加入以下配置 LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /svn>
DAV svn
SVNParentPath /var/svn
#
# # Limit write permission to list of valid users.
# <LimitExcept GET PROPFIND OPTIONS REPORT>
# # Require SSL connection for password protection.
# # SSLRequireSSL
#
AuthType Basic
AuthName "Authorization Realm"
AuthUserFile /var/svn/passwd
Require valid-user
# </LimitExcept>
</Location> 下面建立可訪問用戶文件
# htpasswd -c /var/svn/passwd myapp
要增加用戶,則使用下面命令
# htpasswd /var/svn/passwd other
重起Apache
# service httpd restart
5.建立專案名稱(如果有多個專案,只要重覆這個行為就好了)
## 建立每個單獨專案名稱- svnadmin create /var/svn/MyProjectNam
- chown -R apache.apache /var/svn/MyProjectName
複製代碼 如果在/var/svn/passwd 建立新使用者建不起來
可在/var/svn/MyProjectName/passwd 建立
並用vi /var/svn/MyProjectName/passwd 把內容COPY 到 /var/svn/passwd下即可
Subversion部分安裝完成,打開瀏覽器訪問http://localhost/svn/myapp即可看到效果。
在CENTOS 6下 須注意SELINUX
打開瀏覽器 如 http://localhost/svn/myapp
如下圖
建立相關連結指令
- mkdir -p /tmp/svn/{trunk,branches,tags}
複製代碼- svn import -m 'Initializing basic repository structure' /tmp/svn/ http://localhost/svn/myapp/
複製代碼
|