SVN-集中式版本控制工具
- 一般集中式管理版本控制系统有非常明确的权限管理机制,可以实现分层管理,从而很好的解决开发人员过多的问题
- 集中式SVN服务器更能保证数据安全性,而分布式管理,代码就很容易泄露
- 代码一致性高
工作过程
- 开发者从SVN服务器下载项目组最新代码
- 进入自己的分支,进行修改,每隔一个小时向服务器提交一次
- 把自己的分支合并到服务器主分支上,解决冲突,提交commit
访问方式
- apacheDAV方式,利用Apache下的mod_dav下的mod_dav_svn,通过http访问
- svnserve,直接通过svn访问
- local,本地访问
SVN档案库数据格式
- BDB(一种事物安全型表类型,在服务器中断时,可能会锁住数据),1.2版本以前的缺省版本库格式
- FSFS(一种不需要数据库的储存系统,是二进制文件) ,1.2版本以后的缺省版本库格式
所以数据不能直接看文件实体的,类似一些分布式文件系统MFS
服务端安装及配置
- 检查环境 cat /etc/red-hat-relase 看系统版本号
uname -rm 看内核版本号和位数
- SVN对性能需求不大,所以yum安装
rpm -qa subversion 检查是否已安装
yum下载的软件包放在/var/cache/yum下
如果想保留下载的rpm包,可以改/etc/yum.conf下的keepcache=0为keepcache=1
sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf
可以留给别的机器用
启动
- 建立SVN版本库数据储存根目录 mkdir -p /application/svndata
- 创建用户、密码权限目录 mkdir -p /application/svnpasswd
- svnserve -d -r /application/svndata 然后grep一下看启成功没
- netstat -lntup|grep 3690 查看端口 或者 lsof -i :3690
建立项目版本库
- svnadmin create /application/svndata/qianbao 然后cd到目录下看看生成了哪些文件
- 可以接-fs-type fsfs/bdb 设置数据格式
配置
- cd /application/svndata/qianbao/conf 分别为主配置文件,用户和密码文件,权限文件
- vi svnserve.conf :set nu
- 12行 anon-access=read 改为anon-access=none 去掉注释
- 13行auth-access=write 打开开关
- 20行password-db = passwd 打开开关,改为password-db = /application/svnpasswd/passwd 方便统一管理,可以把所有项目版本库的密码统一管理
- 27行authz-db = authz ,打开开关,改为authz-db = /application/svnpasswd/authz
- 改完之后diff 源文件 新文件 看看变化
- 然后把conf下的passwd和authz作为模板cp到/application/svnpasswd下
- chmod 700 passwd authz
配置文件passwd和authz
- 编辑passwd文件,按照格式添加user和passwd,也可以用脚本批量加
- 编辑authz文件
[group]
master = yinxng,lixue
#版本库目录格式:
[<版本库>:/项目/目录]
<用户名> = <权限>
@<用户组> = <权限> - 注意:authz文件里的用户必须已经在passwd文件里定义,组的权限写在用户权限后面
更改svnserve.conf后 需要重启服务 更改passwd和authz不需要重启(pkill svnserve,然后启动)
客户端软件 TortoiseSVN
- 在本地创建一个项目文件夹,右键check out,第一次是check out,后面都是update(从服务器update下来)
- 访问方式:svn://IP/项目名 输入用户名密码(如果是Apache搭建的svn,前面接http://)
- 修改完后,项目文件夹右键,commit
- 如果要查看服务端有没有更新,右键,repo_browser
- 文件夹图标是绿色对勾,表示已与服务器同步;蓝色问号,表示
- 为避免文件版本冲突,修改代码之前一定要进行更新操作,红色感叹号表示没有上传提交
- 提交时,提交进度对话框中,蓝色文字代表提交一个修改;紫色文字代表一个新增项;深红代表提交一个删除或是替换;黑色代表其他所有项。
- 看代码修改历史,项目文件夹右键TortoiseSVN,show log,可以看到历史版本信息
- 更换SVN服务端IP地址,项目文件夹右键TortoiseSVN,relocate
删除客户端认证
- 删除个别版本库的认证:cmd打开%APPDATA%/Subversion/auth
- 删除所有版本库保存的认证:在文件夹上右键TortoiseSVN,setting,saved data,auth data
linux下SVN客户端管理
- svn co(commit out) svn://ip/qianbao/ /localsvndata/ --username= --password= 获取、更新版本(写自动化脚本会用到)