SVN ¶
简介 ¶
- SVN是Apache下的版本控制系统,可以回滚之前记录,共享文件等
- SVN系统有一个SVN服务器,里面有SVN仓库
体系结构
- 客户层;图形界面操作,命令行操作
- 服务层;提供访问SVN仓库的三种方式:通过http与appache,通过SVN与SVNserve,通过file访问
- 仓库层;FSFS文件方式存储文件(默认),Berkley DB方式存储文件
常用命令 ¶
SVN管理员命令
bash
1SVNadmin help #查看SVN管理员命令列表
2SVNadmin help create #查看创建SVN仓库命令
3SVNadmin --version #查看版本号
4SVNadmin create #创建SVN版本仓库,根仓库服务端命令
bash
1SVNserve help #查看服务端命令列表
2SVNserve -d #开启DOS系统下的SVN服务(一个守护线程,监听3690端口)
3SVNserve -d --listen-port=8888 #指定SVN服务监听的端口
4SVNserve -d --listen-port=8888 -r d:/SVN/repository #指定默认的SVN顶层仓库路径,此时客户端直接访问时,直接给出根仓库名就可SVN客户端命令
bash
1SVN://localhost:8888/d:/SVN/repository/sms #访问SVN仓库(SVN服务端未指定顶层仓库时,不安全)
2SVN checkout SVN://localhost F:/SVN/group/aa #检出,指定目录官方称为:working copy
3SVN add readme.txt #添加readme.tx到SVN管理,readme.txt必须在working copy目录
4SVN commit -m "日志" #working copy中所有对文件的操作提交到SVN服务器
5SVN update readme.txt #更新,working copy中readme.txt和服务端保持一致
6SVN delete readme.txt #删除readme.txt,提交后删除服务端
7SVN revert readme.txt #恢复执行了delete但未提交commit的readme.txt
8SVN list #列出当前working copy所包含的所有文件或目录
9SVN info #列出SVN客户端与SVN服务端的相关信息
10SVN help #获取SVN命令帮助信息,可以查看SVN所有命令tortoiseSVN ¶
下载安装:
- apache官网下载,tortoiseSVN客户端,语言包
客户端相关操作
- 客户端检出:在文件夹上单击右键,有checkout检出选项
- 客户端更新:在working copy空白处,单击右键,更新
- 客户端导入:在文件夹单击右键,选择tortoiseSVN–>导入,即可将文件夹中内容导入到SVN服务器
- 客户端导出:注意,与导入类似,在哪个目录导入,只会导出该目录中内容,而目录本身不会导出,一般是项目完成后
- 客户端添加:在需要添加的文件或文件夹单击右键,tortoiseSVN–>添加
- 客户端删除:delete
- 客户端恢复:revert
- 返回到指定版本:update revert
- …….等,一系列操作都是单击右键
SVN冲突 ¶
冲突问题
- 同行冲突,需要手动处理冲突;先更新,然后进行处理,标记冲突处理完成(mark as merged),提交
- 异行冲突,直接合并;先更新
异行修改冲突
- 两个客户端对同一版本同一个文件进行修改(添加,修改,删除),只要修改的不是同一行数据内容,称为异行修改冲突
- 由于不同客户端修改的行是不相同,SVN给出了比较简单的处理方式,将修改进行合并,大家修改都起作用
- 内容会自动合并,不需要手动
同行修改冲突
- 两个客户端对同一版本同一个文件进行修改,且修改的数据是同一行
- SVN此时无法取舍,只能人工进行冲突内容的选择,即人工完成取舍
- 在冲突的文件上单击右键,选择 edit conficts进行冲突管理(白颜色,无冲突内容)
文件锁,可以解决冲突
- 加锁:客户端用户,单击右键加锁;tortoiseSVN—>属性
- 获取锁:另一个用户可以获取文件,但是如果要修改提交,必须拿到锁
- 删除锁
为用户添加权限 ¶
SVN服务端具体根仓库conf文件夹里面进行配置
- 给匿名用户取消权限,认证用户设置权限
- paawd密码文件注册
- 权限文件注册
- 指定要应用的根仓库:realm=仓库名
passwd密码文件
properties1#添加三个用户,并设置密码 2aa=123456 3bb=123456 4cc=123456权限注册文件
properties1#组 2leaders=aa 3man=bb,cc 4#权限取值只有rw空;且后配置的权限优先级高于前面配置权限 5[/] 6aa=rw #允许独写 7bb=rw #允许独写 8cc=rw #允许独写 9*= #其他用户全部禁止 10[/com] 11@leaders=rw 12@man=rw