[Subversion On CentOS 6]
什麼是 Subversion?
Subversion 是一個自由/開放源碼的版本控制系統, 也就是說 Subversion
管理著隨時間改變的檔案. 這些檔案放置在一個中央 檔案庫 (repository)
中. 這個檔案庫 很像一個尋常的檔案伺服器, 不過它會記住每一次檔案的
變動. 這樣你就可以把檔案回復到舊的版本, 或是瀏覽檔案的變動歷程.
許多人會把版本控制系統想像成某種 “時光機器”.
某些版本控制系統也是 software configuration management (SCM)
系統. 這些系統是特別設計來管理大量程式碼的, 而且具有許多功能,
專門用在軟體發展之用 — 像是可完全了解程式語言, 或是提供編譯軟
體的工作. 不過 Subversion 並不是這樣的系統; 它是一個泛用系統,
可用來管理任何 類型的檔案, 其中包括了程式源碼.
[SVN 環境安裝]
yum install mod_dav_svn subversion
[Subversion 組態檔案初始化]
vim /etc/httpd/conf.d/subversion.conf
LoadModule dav_svn_module modules/mod_dav_svn.so #載入mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so #載入mod_authz_svn.so
# 定義SVN之Site: 192.168.0.151 後面接目錄/svn
DAV svn
SVNParentPath /var/www/svn #本Lab的儲藏庫路徑
AuthType Basic # 採用 Basic 驗證,與Web登入驗證配置有關
AuthName "SVN Test" # 登入使用者驗證時顯示之訊息
#SVNListParentPath on
AuthUserFile /etc/svn-auth-users # .htpasswd 網頁登入驗證使用者帳密儲存路徑
AuthzSVNAccessFile /var/www/accessfile #進階權限配置路徑
Require valid-user #啟用使用者帳戶/密碼Web驗證機制
[建立相關資料夾-並賦與Apache.Apache]權限,與建立SVN專案
> mkdir -p /var/www/svn
> cd /var/www/svn
> mkdir pro_repoC
> chcon -R -t httpd_sys_content_t pro_repoC #SELINUX IF Enabled
> svnadmin create pro_repoC # 建立svn 專案
> chown -R apache.apache /var/www/svn/ #修改apache.apache 權限
[建立htpasswd 網頁使用者驗證登入/密碼]
htpasswd -cm /etc/svn-auth-users testuser
New password:
Re-type new password:
Adding password for user testuser
> chmod 600 /etc/svn-auth-users
> chown apache.apache /etc/svn-auth-users
[進階專案存取配置: /var/www/accessfile]
> vi /var/www/accessfile #Near範例編輯如下,儲存完成後離開
[groups]
admin = near #宣告群組admin,並將near加入該群組
IT_A = David
IT_B = maggie
[/] #svn 根目錄宣示
* = #其他未指定使用者則無任何讀取權限
@admin = rw #屬於admin 群組使用者near,具有讀寫(wr)專案權限
@IT_A = r # 屬於IT_A 群組使用者(David) 僅具有讀取(r)權限
@IT_B= r
[pro_repoA:/]
@admin = rw
@IT_A = r
@IT_B = r
[pro_repoB:/]
*=
@admin = rw
@IT_A = r
@IT_B = rw
[pro_repoC:/] # 本Lab待會測試 較關注在 pro_repoC 專案test
*= # maggie 只有讀取權限,但David 有讀寫專案權限
@admin = rw
@IT_A = rw
@IT_B = r
PS: chown apache.apache /var/www/accessfile #修改apache.apache可讀取權限
Restart Apache:
/etc/init.d/httpd restart
## OR ##
service httpd restart
[ 試著在pro_repoC 專案下建立trunk,baraches,tag目錄 ]
> mkdir -p /tmp/svn-temp/{trunk,branches,tags}
> svn import -m 'Initial import' /tmp/svn-tmp/ http://localhost/svn/pro_repoC/
[利用svn指令 增減 pro_repoC檔案內容]
> mkdir /svn/test
> svn co http://localhost/svn/pro_repoC #checking out(取出pro_repoC專案最新版本3)
> cd pro_repoC
> svn delete NN_A.png #計劃刪除該檔案,若要新增檔案可使用"add"指令
> svn delete A1305526487.jpg #計劃刪除該檔案
> svn commit -m ''del file sync test" #執行commit 同步修改內容至下個svn版本(Ver 4)
另外, 我們使用log 參數查看目前版本紀錄
> svn log http://localhost/svn/pro_repoC #得知目前最新版本為ver4.
[恢復SVN 至指定版本]
> svn co -r 3 http://localhost/svn/pro_repoC #我們計劃恢復版本於ver3.
留言
張貼留言