close
 實  驗 說 明

什麼是 Subversion? 

Subversion 是一個自由/開放源碼的版本控制系統, 也就是說 Subversion 
管理著隨時間改變的檔案. 這些檔案放置在一個中央 檔案庫 (repository)
中. 這個檔案庫 很像一個尋常的檔案伺服器, 不過它會記住每一次檔案的
變動. 這樣你就可以把檔案回復到舊的版本, 或是瀏覽檔案的變動歷程. 
許多人會把版本控制系統想像成某種 “時光機器”.

某些版本控制系統也是 software configuration management (SCM) 
系統. 這些系統是特別設計來管理大量程式碼的, 而且具有許多功能,
專門用在軟體發展之用 — 像是可完全了解程式語言, 或是提供編譯軟
體的工作. 不過 Subversion 並不是這樣的系統; 它是一個泛用系統, 
可用來管理任何 類型的檔案, 其中包括了程式源碼.

實驗目標與說明 By Near

由於Near於前些日些過VisualSVN Server 與 SVN Clinet 應用並做了文章整理,有興趣去讀者可

連結本人撰寫之  VisualSVN+TortoiseSVN(Client)佈署版本控制By KEYNES

           
http://blog.yam.com/keynes0918/article/36722024  

然而 VisualSVN Server 是安裝於Windows端,本LAB 將Subversion安裝於Linux 端做測試

並於Blog中做個整理與備忘!!!!

[運行環境] 

 CentOS 6 * 1  (.151) :  Subversion Server 1.6.11 安裝+(需先安裝好Apache並Enabled)

 Windows 7*1(.199):  SVN Client : 安裝軟件選擇_TortoiseSVN

 Near 分享一張SVN 設置OK圖片: 目前版本為Subversion 2 



[Attention]

# 規劃SVN 儲藏庫為  /var/www/svn   

# 修改群組與使用者權限為 apache.apcche  

 > chown -R apache.apache /var/www/svn

#  SVN專案目錄為 /var/www/svn/pro_repoC 並確定該目錄底下為apache.apache 權限可存取

# 建立 .htpasswd  網頁使用者存取驗證_帳戶/密碼檔案: /etc/svn-auth-users

#  進階多個專案存取權限(RW)配置檔案建立:  /var/www/accessfile 

# 若有SELINUX 設計請執行:   chcon -R -t httpd_sys_content_t  /var/www/svn/pro_repoC


 
 [SVN 環境安裝]      #Apache 假設已完成安裝並Enabled

>  
yum install mod_dav_svn subversion #使用svn版本為1.6.11


[Subversion 組態檔案初始化]

 vi  /etc/httpd/conf.d/subversion.conf   

 Near 本人組態範例如下

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

<Location /svn>   # 定義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驗證機制

</Location>


[建立相關資料夾-並賦與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 網頁使用者驗證登入/密碼]

> vi /etc/svn-auth-users   

> .htpasswd -c  /etc/svn-auth-users  near     #建立三組帳密分別為near,David,maggie
   .htpasswd  /etc/svn-auth-users     David
   .htpasswd  /etc/svn-auth-users    maggie

>  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可讀取權限


[重啟Apache: 網頁瀏覽 http://192.168.0.151/svn/pro_repoC] 如下

我們使用 near 帳戶登入進行測試




登入完成後,我們即可以看掌握SVN 狀況,目前update到第二版本


[ 試著在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/  

*由於我們剛剛修改專案文件內容,版本更新至ver 3*



[利用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. successed


 
[ TortoiseSVN_Clinet存取測試] On Widows 7

 #Checking Out 將 pro_repoC內檔案取回至本地端,本例使用near帳戶登入


   THEN,我們點選"顯示紀錄",選擇要取回版本,本Lab取回Version 4 ->確定


    下圖中,我們預計新增一張圖片"西索.jpg" 至下個版本


   [權限存取測試]

   先前我們配置了進階權限存取之規劃如下

    maggie    # 對pro_repoC 僅有READ權限
    David       #  對pro_repoC 擁有READ與WRITE權限

    THEN  接下來,我們使用"maggie"帳戶進行Commit(送交)測試
  

   commit 權限失敗,確定maggie 無寫入該專案權限     
    

   THEN,我們換具有RW(讀與寫)權限之David 進行commit 送交測試

    版本已順利更新至version 5 ,本Lab 測試大成功到此結束
   
Near Lab實作參考部份文獻:

http://wiki.centos.org/HowTos/Subversion

http://www.if-not-true-then-false.com/2010/install-svn-subversion-server-on-fedora-centos-red-hat-rhel/

arrow
arrow
    全站熱搜

    終極.凱因斯 發表在 痞客邦 留言(0) 人氣()