2010年5月2日 星期日

安裝與設定SVN server

當常常會在不同地方工作時,會常常需要把手中的資料在每台電腦上同步後才能繼續工作
而對於寫程式來說,更加需要版本控管來減低把自己的code改爛後無法復原的情況發生

實驗室的學長以前架了CVS server, 但其實CVS已經越來越少人在用了..
大家都改用SVN, 雖然不知道主要原因是甚麼, 但應該至少是用起來比較方便

記錄一下如何架設SVN

基本上要架設SVN, 都會一並使用svn server端跟client端
最普遍的, server 端使用Subversion, 而client端則使用TortoiseSVN

先把TortoiseSVN安裝好後
我們再來安裝Subversion (Subversion需配合Apache使用, Apache的安裝請自己再找文章吧)

安裝完Subversion後, 請把目錄資料夾裏 Subversion/bin 底下的
mod_dav_svn.so
mod_authz_svn.so
libdb4X.dll <--因版本不同, X可能會不一樣, 我下載的版本就是libdb44.dll
libeay32.dll ssleay32.dll
這5個檔案copy到Apache底下modules的目錄裏

然後開啟 Apache底下conf目錄裏的 httpd.conf 檔案apache的設定
找到以下這兩行
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
然後把其前的 '#' 刪掉, 讓apache執行時讀取這兩個模組

接著, 再加上下面這兩行指令
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

再來, 我們需要設定SVN存放版本資料的位置,
繼續在httpd.conf裏加入以下
####SVN設定###########
<Location svn/code>        #設定網址, ex: http://localhost/svn/code
DAV svn
SVNPath c:/svn/myCode #設定SVN資料在本機裏的絕對路徑, 待會我們再來建這個檔


# how to authenticate a user
AuthType Basic
AuthName "Subversion repository"

#進行帳號驗證時的帳號、密碼資料
AuthUserFile "c:/svn/myCode/conf/passwd.ini"

# only authenticated users may access the repository
#操作時要進行帳號驗證,拿掉此行就不會進行驗證
Require valid-user

# our access control policy
# authz.ini 是設定帳號對各 Project 可讀/寫權限的設定檔
AuthzSVNAccessFile "c:/svn/myCode/conf/authz.ini"
</Location>

儲存好之後, 我們接下來使用
按照剛剛打的路徑建立一個 C:/svn/myCode 的資料夾, 以放置SVN的資料

成功建立repository後, myCode內應該會有以下檔案
因為要提供網路存取的關係, 需要把這個c:/svn 資料夾共用出去, 使用者為everyone


剛剛設置 httpd.conf 時應該有注意到我們有設SVN的存取密碼及權限檔
現在先利用Apahce來建立密碼檔 - passwd.ini
開啟cmd, 輸入
"C:\Program Files\Apache Software Foundation\Apache2.2\bin\htpasswd.exe" -c passwd.ini [帳號]
輸入帳密後, 在apache/bin 裏應該就會產生一個passwd.ini的檔案
裏面就會有剛建的帳號跟加密過的密碼
把passwd.ini 放到 c:/svn/myCode/conf/passwd.ini

接著我們建立存取權限的檔案authz.ini
自己手動新增這個檔, 然後修改內容為以下
# 先定義群組
[groups]
developer = user1,user2,user3
art = user4
everyone = *

# 預設拒絕所有人進入瀏覽
[/]
* = # *為annoymous, *= 即匿名不可存取
# 設定儲存庫訪問權限,語法:[儲存庫:專案路徑]

[ProjectName:/]
@developer=rw #可讀寫
@art=r #僅可讀取

存檔.

以上步驟皆完成後, 現在便來重開Apache, 更新設定吧.

最重要的時刻來了, 我們連到 http://localhost/svn/myCode
如果SVN成功的話, 將會出現 Revision 0:/ 的畫面


如果不成功的話...可能就要檢查:
1. svn的資料夾的共用設定
2. 在httpd.conf設置讀入模組那4行程式的順序
3. 環境參數中是否有Subversion的路徑

再不行的話, 我也不知道了...再砍掉重練吧

沒有留言:

張貼留言

Powered By Blogger

Label Cloud

2009 (1) 不能連localhost (1) 內嵌音訊 (1) 求職 (1) 面試 (1) 音樂 (1) 動畫師 (1) 帳號管理 (1) 排程 (1) 畢展 (1) 創意市集 (1) 惡意程式 (1) 電腦動畫 (1) 權限管理 (1) adobe (1) android (4) animation (1) animator (1) apache (3) art (5) art taipei 2008 (1) audio (2) bbs (1) birthday (1) black and white (1) browser (2) career (2) certification (1) cgw (1) cinematography (1) code (3) Collie (1) color (2) command (16) competition (1) computer science (3) connection (1) cover (1) crafyJS (1) creative (1) CSS (1) DBN (2) design (7) developer (1) display (1) drawing (1) eclipse (3) embed (1) engine (1) EntityJS (1) exception (1) exhibition (1) flower (1) frame (1) freebsd (11) french (1) friends (3) function (1) game (1) google (2) graphic (3) html (2) HTML5 (1) https (1) illustrator (1) image processing (1) interactive storytelling (1) internet (3) interview (1) introduce (1) ip (1) japan (1) java (4) javascript (3) JIT (1) jmonkey (1) job (1) jquery (1) LAMP (1) LimeJS (1) linux (8) liquid galaxy (1) ListView (1) localhost (1) log (1) mail (1) marquee (1) midi (1) mime-type (1) mis (1) MIT (2) mo-cap (1) mobile (1) Modernizr (1) motion capture (1) movie (1) music (3) narrative (2) NCCU (3) news (1) note (10) originality (1) otaku (1) painting (4) performance (1) photography (2) photoshop (7) php (1) player modelling (1) poster (1) postfix (1) programming (5) QuarkJS (1) resource (1) schema (1) scroll (1) self aware (1) semantic (1) server (1) share (1) sketch (2) software (4) solve (2) Sonivox (1) speaking (1) ssl (1) SSLPeerUnverifiedException (1) streaming (1) Subversion (1) sunspider (1) SVN (3) svn server (1) system (1) taipei (1) test (1) tfam (1) tool (1) TortoiseSVN (1) tutor (1) ubuntu (3) update (1) uri (1) video (1) vim (1) w3c (1) wap wcss css css2.0 (1) web (8) WebGL (1) webkit (2) well-form (1) wiimote (1) wiiusej (1) workshop (1) xhtml (1) xml (2)