close
實 驗 說 明
什麼是 Subversion?
> yum install mod_dav_svn subversion #使用svn版本為1.6.11
[Subversion 組態檔案初始化]
什麼是 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實驗目標與說明 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
> yum install mod_dav_svn subversion #使用svn版本為1.6.11
[Subversion 組態檔案初始化]
vi /etc/httpd/conf.d/subversion.conf
Near 本人組態範例如下
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範例編輯如下,儲存完成後離開
[ 試著在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/

[建立相關資料夾-並賦與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到第二版本

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

#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 測試大成功到此結束

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/
全站熱搜