用svn已经很久了,但我所在的技术环境比较简单,基本我一个人使用svn。最近进一步学习了一下。以前对分支、标记知道,但不理解,也没时间管他,现在也算了解清楚了。
推荐的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
ssl配置(略)
密码:
htpasswd -cm /etc/svn-auth-file zh
配置authz,和svn+ssh一样
哇塞,好帅啊:
https://www.zeeeitch.cn/svn
推荐的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