Tuesday, August 11, 2009

SVN 安裝記錄

1.

下載 svn server/client (svn-win32-1.4.6.zip / Subversion 1.4.6 Win32 binaries for Apache 2.2.x.)

http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=8100&expandFolder=8100&folderID=91

2.

解壓縮。範例目錄 c:\svn-win32-1.4.6
3.

將 c:\svn-win32-1.4.6\bin 加至 PATH 變數
4.

建立 APR_ICONV_PATH 變數, 內容為 c:\svn-win32-1.4.6\iconv

Note

這個環境變數 svn client 用來尋找 I18N 字串的位置

5.

使用 svnadmin 建立檔案庫

1.

建立一個目錄用來集中放置 SVN 檔案庫

mkdir c:\svn_repos

2.

建立一個 svn 檔案庫 。請在目錄 c:svn_repos 之下執行此命令:

svnadmin create HelloProject

Note

如果您無法使用 svnadmin 指令,請檢查是否已將 SVN Client 安裝路徑下的 bin 目錄附加至 PATH 環境變數中。若您確定已經加入,那麼試著重開一個命令視窗後,再次執行指令。

HelloProject 您可以使用任何您想要作為檔案庫的名稱

6.

建立 svn 帳號

Tip

如果的目標是使用 Apache Httpd + SVN 的組合,這一步可以略過。因為 Apache 管理帳號的清單可以不使用 SVN 檔案庫內的清單。

一個 SVN 檔案庫的結構如下:

C:\svn_repos>tree
列出資料夾 PATH
磁碟區序列號碼為 000007C0 08A8:9415
C:.
└─fooo
├─conf
├─dav
├─db
│ ├─revprops
│ ├─revs
│ └─transactions
├─hooks
└─locks

您將會進入 conf 目錄,修改相關檔案。
1.

修改檔案 svnserve.conf (這是 svn 內建 server 所使用的 config 檔) 取消以下三行的註解

anon-access = none
auth-access = write
password-db = passwd

Tip

anon-access 原先為 read,意思是不認識也能讀取。我們將它設為 none 就需要通過認證才能讀取。
1.

修改 passwd 檔,新增使用者

username = userpassword

2.

啟用 svn server

C:\>svnserve -d -r c:\svn_repos

3.

使用 svn 指令測試連線

C:\Documents and Settings\Administrator>svn info svn://localhost/fooo/
認證領域: 29081c60-970c-af41-849c-6e50809ef675
'Administrator' 的密碼:
認證領域: 29081c60-970c-af41-849c-6e50809ef675
使用者名稱: qrtt1
'qrtt1' 的密碼: ****
路徑: fooo
URL: svn://localhost/fooo
檔案庫根目錄: svn://localhost/fooo
檔案庫 UUID: 29081c60-970c-af41-849c-6e50809ef675
修訂版: 7
節點種類: 目錄
最後更新作者: qrtt1
最後修改修訂版: 7
最後修改日期: 2008-06-23 23:37:45 +0800 (星期一, 23 六月 2008)

Tip

當您沒有指定使用者時,它會以您登入系統的帳號當作您將要登入 SVN 的帳號。您可以使用參數 --username

C:\>svn info svn://localhost/fooo --username qrtt1

如果您的防火牆沒有擋住 port 3690 那麼您可以耐 localhost 換成對外的 ip 直接連線測試。

7.

將 svn 建立為 windows service

Note

svnserve 雖然有提供啟動為 windows service 的選項,不過使用起來不如真的安裝為 windows servier 方便。因此我們使用其他的工具將 svn 安裝成為 windows service。

下載並安裝 http://svnservice.tigris.org/files/documents/2717/36986/SVNServiceSetup-0.5.2.msi

安裝完畢後, 由[開始功能表]->[SVNServiceAdmin]開啟設定程式設定 SVN Binary Path 為 c:\svn-win32-1.4.6\bin 設定 Repository Path 為 c:\svn_repos

8.

複製 Apache Httpd 需要的檔案 (如果有相同的檔案, 請備份舊的使用 svn 內附檔案)

將 下列檔案由 c:\svn-win32-1.4.6\bin 複製到 apache 2.2.x 的 modules 目錄
* mod_authz_svn
* mod_dav_svn
將 下列檔案由 c:\svn-win32-1.4.6\bin 複製到 apache 2.2.x 的 bin 目錄
* intl3_svn.dll
* libdb44.dll

9.

修改 apache conf目錄的 http.conf 載入 svn 需要的模組

在 shared object 載入區 加入下列二行
* LoadModule dav_svn_module modules/mod_dav_svn.so
* LoadModule authz_svn_module modules/mod_authz_svn.so
取消 mod_dav 的註解
* LoadModule dav_module modules/mod_dav.so

10.

在 http.conf 檔最下方建立一個 區塊


DAV svn
SVNParentPath c:/svn_repos
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile conf/svn-password.pass
AuthzSVNAccessFile conf/svn-authz.conf
Require valid-user


Note

請注意路徑的部分,我們填寫的是 c:/svn_repos 而非 c:\svn_repos

11.

在 Apache 的 conf 目錄建立 svn-password.pass

htpasswd -cm c:\[your apache path]\conf\svn-password.pass [your id]

Note

htpasswd 在 Apache Httpd 的 bin 目錄內,它是用來建立使用者帳號檔的小工具。參數 c 是指新建一個檔案;參數 m 是指使用 md5 編碼。

12.

Apache 的 conf 目錄建立 svn-authz.conf

參考: http://davidwinter.me.uk/articles/2006/03/03/access-control-for-subversion-with-apache2-and-authz

[groups]
dev = qrtt1

[/]
@dev = rw

13.

由 http://localhost/svn/your_project 測試

No comments: