推薦的svn目錄結構:
trunk主幹
branches分支
tags標記
這些規則對於svn是沒有意義的,只是一個規約。開發人員遵循即可。
分支就是根據項目需要,分理處一個特殊功能的代碼,進行持續開發。
標記是一個快照,複製出來就不能再提交了。但這也是一個規約,強行提交還是可以的。
用tortoiseSVN的話在tags上進行提交會談出警告。
主幹就是正常開發代碼分支,當然項目大了,在分支和標記外,還可以有很多很多的小的開發分支,基本功能實現差不多了,再合併到trunk。各個小分支可以給各個開發小組使用。
svn服務器內部對分支的實現是類似文件系統軟連接的形式。所以不佔什麼空間。
對於分支所提供的命令也就只有copy和merge兩個。
合併操作是在本地工作文件夾進行的。
tortoiseSVN的版本圖可以較好的顯示版本關係,branches會伸出一條分支,而tags則只會用黃色方塊標記在主分支上。再次聲明一下tags和branches在服務端是一樣處理的。
[b]關於權限[/b]
ssh+svn的方式權限管理是有些問題的。用戶能夠登錄ssh,就能訪問svn文件夾,那麼無法對其進行基於代碼路徑的控制
唯有使用apache (ssl) + svn是功能最全的:
安裝apache
安裝svn,打開dav等參數,會將so文件放入/usr/local/libexec/
httpd.conf
LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
LoadModule ssl_module modules/mod_ssl.so
<Location /svn>
DAV svn
SVNPath /usr/local/svn
AuthType Basic
AuthName "Feloo Subversion Repository"
AuthUserFile /etc/svn-auth-file
Require valid-user
AuthzSVNAccessFile /usr/local/svn/conf/authz
</Location>
ssl配置(略)
密碼:
htpasswd -cm /etc/svn-auth-file zh
配置authz,和svn+ssh一樣
哇塞,好帥啊:
https://www.zeeeitch.cn/svn