Subversion On CentOS 6


[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.

留言

這個網誌中的熱門文章

Json概述以及python對json的相關操作

Docker容器日誌查看與清理

遠程控制管理工具ipmitool