背景:剛剛新裝的centos5 發布版, 敲上命令: svnserve --version 得出:svnserve,版本 1.4.2 (r22196) 看來系統已為我預裝了subversion,我無需安裝了 下面開始配置 Step1) 建立存放庫 svnadmin create / home / svn - repos Step2)開始配置 vi /home/svn-repos/conf/svnserve.conf 修改svnserve.conf 最終該檔案如下: [general]
anon - access = read
auth - access = write
password - db = passwd
上面的意思是可以匿名讀,但寫入必須要有許可權,許可權配置在passwd檔案中 vi /home/svn-repos/conf/passwd 修改passwd檔案 最終該檔案如下: [users]
weip = 123 Step3) 啟動服務 經過step1),step2),服務已配置好,可以啟動了 svnserve -- daemon -- root / home / svn - repos 關於--root的使用請參看: http://svnbook.subversion.org.cn/1.2/svn.serverconfig.svnserve.html 文檔中說 : 如果一個版本庫是位於/usr/local/repositories/project1,則一個用戶端可以使用 svn://host.example.com/usr/local/repositories/project1 來進行訪問
你可以使用svnserve的-r選項,這樣會限制只輸出指定路徑下的版本庫:
$ svnserve -d -r /usr/local/repositories
…
使用-r可以有效地改變檔案系統的根位置,用戶端可以使用去掉前半部分的路徑,留下的要短一些的(更加有提示性)URL:
$ svn checkout svn://host.example.com/project1
所以通常情況下,如果你應該將產生的庫根目錄放在啟動指令碼的-r 或者--root後面 正如我們上面的兩句: svnadmin create / home / svn - repos svnserve --daemon --root /home/svn-repos Step4)用戶端訪問 剛開始訪問不了 於是檢查iptables 簡單的配置方法是vi /etc/sysconfig/iptables檔案,在裡面找到這樣的一行: - A RH - Firewall - 1 - INPUT - j REJECT -- reject - with icmp - host - prohibited 在這行上面加上: - A RH - Firewall - 1 - INPUT - m state -- state NEW - m tcp - p tcp -- dport 3690 - j ACCEPT 然後 . / iptables restart 這樣用戶端就可以訪問svn服務了,別的linxu可能沒有這個問題 服務端啟動了,但儲存庫還沒有儲存任何項目,此時你除了check out root之外(這個沒什麼意義),你不能check out其他任何東西,所以你必須要往儲存庫添點東西 比如我剛做了個項目visdot,但還未入庫,怎麼辦 首先建立trunk svn mkdir - m " creating a project " svn: // 192.168.1.100/visdot
svn mkdir - m " creating a trunk " svn: // 192.168.1.100/visdot/trunk 然後你就可以將這個trunk checkout到本地目錄比如d:/projects/visdot,此時checkout下來是空目錄 這時你就可以將你的項目內容拷貝到d:/projects/visdot,接著可以check in了 上面的192.168.1.100就是你啟動了svn服務的Linux機器地址,到此你的項目完全入庫 接下來你就可以check in, check out 你的項目了 上面的幾部操作你可以使用命令列來完成,也可以使用gui 用戶端,比如eclipse的subversion 外掛程式 後記: 假設你的trunk已經上線,那麼接下來要不斷升級的話,你應該建立分支來根蹤項目 比如: svn mkdir - m " creating a new branch " svn: // 192.168.1.100/visdot/branches
svn copy - m " create release branch for 1.0 " svn: // 192.168.1.100/visdot/trunk /
svn: // 192.168.1.100/visdot/branches/rb-1.0 當然還有merge, 這已超過了本文討論的範圍,不再贅述