Subversion(SVN) 入門安裝設定教學

由 Derek 發表於 五月 23, 2011 / 尚無評論

主機環境:

        Linux Centos5.6 64位元

安裝套件:

        mod_dav_svn

        subversion

 

yum安裝


[root@localhost ~]#  yum install mod_dav_svn subversion

使用yum安裝時,如果安裝apache的話,會自動把所需要的都一併安裝。如: aprapr-utilapache….

 

若要查看subversion是否有安裝或安裝成功可下此命令查詢


[root@localhost ~]#  svn –version

svn, version 1.6.11 (r934486)

compiled Apr 14 2011, 07:41:38

Copyright (C) 2000-2009 CollabNet.

以下省略………

 

開啟Apache服務

先查看apache是否有安裝好。如果有要修改到設定請小心

首先開啟/etc/httpd/conf/httpd.conf


[root@localhost ~]#  vim /etc/httpd/conf/httpd.conf  #如果有要修改請改這隻檔

[root@localhost ~]#  service httpd start             #開啟apache

Starting httpd:                                            [  OK  ]

[root@localhost ~]#  chkconfig httpd on             #設定開機自動開啟

 

 

 開啟瀏覽器 http://yourmachine  (yourmachine請輸入自己IP或是網址)

查看是否與下圖一樣。若沒看到表示apache有問題,在重新啟動看看。


 

 

SubversionApache基本設定

在來設定apache內的相關設定好讓Subversion能與apache相互抓取需要的資料


[root@localhost ~]#  vim /etc/httpd/conf.d/subversion.conf

#在最上方查詢是否有這兩行,沒有的話請自行加入

LoadModule dav_svn_module     modules/mod_dav_svn.so

LoadModule authz_svn_module   modules/mod_authz_svn.so

 

#subversion.conf加入下列的內容,此內容是用來支援基本驗證,

 並將Apache指到實際放置版本庫

<Location /repos>                     # /svn 代表網址 http 連線進入的根目錄路徑位置

        DAV svn                     # svn = 連線方式

        SVNPath /var/www/svn/repos   # svn 本機檔案位置

        AuthType Basic

        AuthName "Subversion repos"   # 顯示登入帳號密碼的顯示資訊

        AuthUserFile /etc/svn-auth-conf  # 帳秘存放的位置

        Require valid-user              # 需輸入帳號密碼

        #Satisfy Any                                 # 無需帳號即可使用 

</Location>

 

 

建立帳號密碼 

第一次設定時要加參數 –CM。它會建立檔案並用 MD5 將密碼加密,之後就只要使用M這個參數就行了。

(yourusernameanotherusername請設帳號)


[root@localhost ~]#  htpasswd -cm /etc/svn-auth-conf yourusername   #第一次建帳密

New password:          #輸入密碼

Re-type new password:    #確定輸入的密碼

Adding password for user yourusername

[root@localhost ~]#  htpasswd -m /etc/svn-auth-conf anotherusername  #第二次建帳密

New password:          #輸入密碼

Re-type new password:    #確定輸入的密碼

Adding password for user anotherusername

 

設定版本庫

再來建立用來提交及取區檔案的版本庫。

svnadmin create為建立一個新的空版本庫,說明可參考【svnadmin create


[root@localhost ~]#  cd /var/www/

[root@localhost ~]#  mkdir svn

[root@localhost ~]#  cd svn

[root@localhost ~]#  svnadmin create repos

[root@localhost ~]#  chown -R apache.apache repos

[root@localhost ~]#  service httpd restart

 

 

測試看看透過網頁是否能存取到版本庫,

http:// yourmahcine/repos  (yourmacine請輸入自己IP或是網址)

一開始應該會看到一個要輸入使用者名稱和密碼的視窗,請輸入剛剛上面所設定的帳密

登入後會看到瀏覽器出現,Revision 0: /的頁面如下圖,若有看到這兩個畫面表示初部設定沒問題。

 

再來介紹如何運用Subversion

順利的話,現在所要做的就是建立版本庫。可用下列方式查看svn有什麼使用方式


[root@localhost ~]#   svn --help

最常使用的是 : svn importsvn commit ( ci )svn checkout ( co )

會用 import 將檔案匯入版本庫; checkout 取出它們作修改;commit 將改動提交到資料庫內。

 

 

說明一下目錄結構,在根目錄下設有 branchestags trunk 目錄,當中 trunk 會包含所有檔案,如下

此部份不以寫程式或維護「項目」。主要用來儲存相對簡單的設定檔及文件。請用適合你的方式來設置

 

建立目錄及放置檔案

在建立目錄和檔案時的結構可依自行需求設定


[root@localhost ~]#  cd /tmp

[root@localhost ~]#  mkdir mytestproj      #建立mytestproj資料夾

[root@localhost ~]#  cd mytestproj

[root@localhost ~]#  mkdir configurations options main

[root@localhost ~]#  vim configurations/testconf1.cfg  #內容可自行輸入

[root@localhost ~]#  vim options/testopts1.cfg

[root@localhost ~]#  vim main/mainfile1.cfg

 

匯入

把剛剛所建立好的資料匯入到 subversion


[root@localhost ~]# svn import /tmp/mytestproj/ file:///var/www/svn/repos/mytestproj -m "Initial repository layout for mytestproj"

Adding         /tmp/mytestproj/main

Adding         /tmp/mytestproj/main/mainfile1.cfg

Adding         /tmp/mytestproj/configurations

Adding         /tmp/mytestproj/configurations/testconf1.cfg

Adding         /tmp/mytestproj/options

Adding         /tmp/mytestproj/options/testopts1.cfg

Committed revision 1.

登入網頁測試http:// yourmahcine/repos (yourmachine請輸入自己IP或是網址)

會看到下圖,且可以點選mytestproj查詢內容

取出

此時可以看到匯入的資料,除了文字檔外,都可點選下載。

這邊來測試用另一台Linux主機上使用它。此操作為另一台Linux主機


[root@localhost ~]#  cd /tmp

[root@localhost ~]#  svn co http:// yourmahcine /repos/mytestproj

                                           #(yourmacine請輸入自己IP或是網址)

A    mytestproj/main

A    mytestproj/main/mainfile1.cfg

A    mytestproj/configurations

A    mytestproj/configurations/testconf1.cfg

A    mytestproj/options

A    mytestproj/options/testopts1.cfg

Checked out revision 1.

 

編輯及提交

此時已經從Subversion伺服器取出第一版。現在來試試編輯一些東西後在提交回Subversion伺服器,

此操作為另一台Linux主機


[root@localhost ~]#  cd mytestproj/

[root@localhost ~]#  vim configurations/testconf1.cfg  #自行加入或刪除一些內容

[root@localhost ~]#  svn commit -m "Added a line to testconf1.cfg."

Sending        configurations/testconf1.cfg

Transmitting file data .

Committed revision 2.

 

新增或刪除物件

在新增上使用Add這個參數,刪除使用delete這個參數,設定完後會發現在版本上會變為第3版,

此操作為另一台Linux主機。

不管在做任何的操作之前都一定要先更新一次,再做動作。

 


[root@localhost ~]#  svn co http:// yourmahcine /repos/mytestproj

                                                   #(yourmacine請輸入自己IP或是網址)

A    mytestproj/main

A    mytestproj/main/mainfile1.cfg

A    mytestproj/configurations

A    mytestproj/configurations/testconf1.cfg

A    mytestproj/options

A    mytestproj/options/testopts1.cfg

Checked out revision 2.

 

[root@localhost ~]#  cd mytestproj

[root@localhost ~]#  cp /etc/yum.repos.d/CentOS-Base.repo configurations/

[root@localhost ~]#  svn add configurations/CentOS-Base.repo   #新增檔案

A         configurations/CentOS-Base.repo

 

[root@localhost ~]#  svn commit -m "Added the CentOS Yum repo file."

Adding         configurations/CentOS-Base.repo

Transmitting file data .

Committed revision 3.

 

還原

如果在臨時上有問題要還原到之前的版本的話,可以先查看log,這邊會存放每次所提交的訊息。在針對log部份做還原。

Log 查詢版本


[root@localhost ~]#   svn log http://yoursvnserver/repos

                       #(yourmacine請輸入自己IP或是網址),此為針對整個版本庫查詢

[root@localhost ~]#  svn log http://yoursvnserver/repos/mytestproj

#(yourmacine請輸入自己IP或是網址),此為針對個別項目查詢

 

還原版本


[root@localhost ~]#   svn co -r 1 http://yoursvnserver/repos/mytestproj

                        #(yourmacine請輸入自己IP或是網址),數字1為要還原的版本

 

 

存取控制清單

簡單的說這個部份就是權限的設定,可以給使用者寫入或讀取的設定。

此設定都是透過 AuthzSVNAccessFile這個檔案選項來完成的,以一個檔名來作為參數。

 


[root@localhost ~]#  vim /etc/httpd/conf.d/subversion.conf

<Location /repos>

        DAV svn

        SVNParentPath /var/www/svn/repos

        AuthzSVNAccessFile /etc/svn-acl-conf     #加入此段,路徑部份可自己修改

        AuthType Basic

        AuthName "Subversion repos"

        AuthUserFile /etc/svn-auth-conf

        Require valid-user

</Location>

 

再來就可以依自行設定的路徑建立檔案,這邊是建立於 /etc/svn-acl-config

當中存取權可以是 r(唯讀)、rw(讀寫)、或空白(禁止存取)。預設的 ACL 是禁止用戶存取版本。


[root@localhost ~]#  vim /etc/svn-acl-config

[framework:/]

john =  r

joe = rw

 

也可以在名叫 groups 的分段內建立群組,然後在存取控制清單內將 @ 符號放在群組前面


[groups]

staff = joe, george

 

[framework:/]

john =  r

@staff = rw

 

如果想令所有用戶能閱讀每個版本庫,你可以為每個版本庫的根目錄加入以下一個分段


[/]

* = r

 

 

想了解如何在Client端設定請參考此篇【Subversion Client端(windows設定)

 

關於作者

一個半路殺出來的傻小子,憑著一股傻勁努力的學習、嘗試、分享。希望能用自己微薄之力,替IT界和資訊界盡一點心力。單憑一己之力始終還是有限,歡迎和我有相同理念的夥伴一同加入一同努力。

評論

此文章尚無評論。

發表評論

*