http://dkr-note.blogspot.com/2006/10/subversion-with-apache.html





Subversion 是一套版本控制 (Version Control) 的軟體,何謂 Version Control ?以我們寫程式的時候為例,Programmer 常常會遇到在更改程式的時候,因為種種不明因素而忘記自己改了些什麼,這時候通常都會想「我剛剛做了什麼?」「如果有時光機多好!」。這個問題可以很簡單的透過版本控制系統幫你解決。Subversion 就是這樣的系統。

關於 Subversion 的使用相當的容易,只要在 server 端把 Subversion service 建好,並且建立好專案的檔案庫之後,只需要知道 svn checkout、svn add、svn update、svn commit 這四個指令幾乎就很夠用了。關於 Subversion 的使用在此不多提,可以參照 in2 寫的 Subversion Quick Start,看完之後應該就可以開始使用 Subversion 了。

這篇要講的,主要是 Subversion server 架設的部分。這邊以 ubuntu linux 為例,原因?因為室友 GeeLauChen 他用的就是 ubuntu,我的 Subversion service 又剛好架在他的 server 上 XD

既然用的是 ubuntu,那麼記得 apt-get 是你的好朋友!要安裝 Subversion 十分簡單,假設你已經裝好 Apache 只要下:

apt-get install subversion libapache2-svn

就可以把 Subversion 還有跟 Apache 整合的 module 安裝好。

接下來就是設定的部分。ubuntu 把 Subversion 跟 Apache 整合的設定檔放在

/etc/apache2/mods-available/dav_svn.conf

以下的範例是一個 dav_svn.conf 的例子。


DAV svn
SVNPath /var/www/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd

Require valid-user



這邊跟 SVN 有關的有幾行:



代表著你透過 Apache 存取 Subversion 檔案庫時的位置,在此我們用的是 /svn,代表位置是 http://server/svn/。

SVNPath /var/www/svn

表示說 Subversion 檔案庫實際存放的位置。

AuthUserFile /etc/apache2/dav_svn.passwd

則是代表驗證檔案的位置,然後接下來的


Require valid-user


則是代表我們利用 Apache 的 LimitExcept 來做存取的控制,這部分請參照 Apache 的說明,接著我們要建立給 Apache 做認證的檔案。用以下指令:

htpasswd2 -c /etc/apache2/dav_svn.passwd

htpasswd2 這隻程式會讓你輸入密碼。最後是建立起你的檔案庫,用以下指令:

svnadmin create /var/www/svn

就可以建立起新的 svn 檔案庫了。然後重新啟動 Apache,你就可以透過 http protocol 來做 Subversion 檔案庫的存取了。

如果我們不想每次新增加專案的時候都要重新去更改 dav_svn.conf 檔,那麼我們可以把 SVNPath 改成 SVNParentPath,那麼在 SVNParentPath 的所有目錄都會被視為是 Subversion 檔案庫,如此不但不用去更改 dav_svn.conf 檔,Apache 也可以不用 restart,不過隨之而來的壞處就是所有的專案只能夠用一份 .passwd 去做管理。因此需要自己根據不同的需要來做斟酌。如果想要寫出類似 OpenSVN 的 Web 介面,基本上就是去改 config 檔,然後建立檔案庫以及使用者帳號、密碼,接著重開 Apache,室友 Tim 就實做了一套 CloseSVN 給我們自己人用 XD 看看他要不要分享一下心得吧。

Subversion 的架設還有使用基本上大概就是這樣,如果有其他的問題,可以參照 plasma 翻譯的 svnbook,有更詳細的說明。


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 付爸爸 的頭像
    付爸爸

    付爸爸的神奇日記本

    付爸爸 發表在 痞客邦 留言(0) 人氣()