文章目录
- 基础知识-Windows下版本控制器(SVN)
- 3.4 TortoiseSVN使用
- 3.4.1 SVN检出(SVN Checkout)
- 3.4.2 SVN更新(SVN Update)
- 3.4.3 **SVN**提交(SVN Commit)
- 3.4.4 **SVN**还原(SVN Revert)
- 3.4.5 解决文件冲突
- 3.4.6 授权访问
- 3.4.7 **显示日志(Show log)**
- 3.4.8 **版本库浏览(Repo-browser)**
- 3.4.9 TortoiseSVN更换或重置登录用户
- 3.4.10 如何修改提交仓库地址
- 3.4.11 TortoiseSVN中创建版本库和导入区别
- 3.4.12 合并分支代码
基础知识-Windows下版本控制器(SVN)
3.4 TortoiseSVN使用
3.4.1 SVN检出(SVN Checkout)
3.4.2 SVN更新(SVN Update)
3.4.3 SVN提交(SVN Commit)
3.4.4 SVN还原(SVN Revert)
指代项目版本回滚之前的某个版本
点击显示日志可以查看版本信息
3.4.5 解决文件冲突
选中冲突文件,鼠标右键选择“编辑冲突”
在下方进行复制编辑,最后点击“保存”即可。
到现在文件状态就已经变了
3.4.6 授权访问
总结:
- 如果是匿名访问(就是不用输入用户名+密码的访问方式),请只开启anon-access = write
- 如果授权访问,请先设置anon-access = none,然后打开3个:auth-access = write、password-db = passwd、authz-db = authz
注意:必须设置anon-access = none,否则会代码提交报错失败。
①要设置授权访问就需要创建用户,并为用户设定权限
②打开授权访问的配置
[1]打开 D:\DevRepository\Subversion\CRM\conf\svnserve.conf (svnserve.conf文件: 核心配置文件)
[2]将第 19 行 anon-access = write 注释掉:# anon-access = write
表明该版本库不接受匿名访问
[3]将第 20 行# auth-access = write 注释打开:auth-access = write
表明该版本库使用授权访问
[4]将第 27 行注释打开:password-db = passwd
表明使用同目录下的 passwd 文件保存用户信息
[5]将第 36 行注释打开:authz-db = authz (authz文件: 权限认证相关)
[6]打开 passwd 文件创建用户 (passwd文件: 用户密码相关)
tom = 123456
jerry = 123456
nick = 123456
tester = 123456
[7]打开 authz 文件:#后面注释的是例子
[/]表示该仓库下的所有路径
[CRM:/oneLayer/1]中CRM为仓库名,表示该仓库下的“/oneLayer/1”路径
@developer= rw 表示developer该组的所有成员访问权限为可读可写,设置组权限需要用@符号表示,而直接设置用户权限则不需要添加@
[CRM:/oneLayer/1]
jerry = rw,表示jerry 用户只拥有CRM仓库下/oneLayer/1路径下的所有读写权限访问权限,而/oneLayer/1前面的路径则没有访问权限
*= 因为后面没有写访问权限,所以表示其他人没有访问权限
<1>创建用户组
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
@developer = rw
<2>指定路径,给用户和用户组授权
# [/foo/bar]
# harry = rw
# &joe = r
# * =屏蔽那些未设定的用户,让它们没有任何权限
[/]
@developer = rw
tester = r
* =
[CRM:/oneLayer/1]
jerry = rw
[CRM:/oneLayer/2]
nick = rw
<3>权限的继承性:父目录设置的权限,对子目录同样有效——除非子目录进行 了更为具体的设定(这个没验证过,需博主自己验证下)
[/subDir]
userOther = rw
* =
这个例子表示当前版本库下的 subDir 目录只有 userOther 有读写权限,其它用户 无任何权限
模拟登录tom用户,验证能否提交成功。答案是可以提交。
模拟登录测试用户tester,验证能否提交成功。答案是不可以提交,因为权限不够。
做一个小测验,需求:假设我的项目结构如图,假设每一个包含text.txt的文件夹都是一个真实的项目,且存在多层级结构,我现在想实现
tom用户
具有CRM路径(目前CRM路径就是SVN的某一仓库的根目录)下的所有读写访问权限,而jerry用户
只CRM/oneLayer/1路径下的读写权限,而nick用户
只有CRM/oneLayer/2路径下的读写权限,而tester测试用户
只有读权限没有写权限。
- 这个项目想模拟的就是新建的tom用户具有管理员权限,jerry和nick用户只有部分路径的访问读写权限,而测试用户只有读没有写的权限。对应的真实场景就是:我自己搭建了SVN,我自己创建管理员账户并授权,但是新建别的用户我想控制权限,让他们只有自己项目的访问权限,而别人的项目没有拉取代码的权限,想演练下如何实现。
-
前提说明:目前CRM路径就是SVN的某一仓库的根目录,就是对应auth配置文件中的[/]
-
passwd文件
tom = 123456 jerry = 123456 nick = 123456 tester = 123456
-
auth文件
[groups] # 控制新增用户权限 [/] @developer = rw tester = r * = [CRM:/oneLayer/1] jerry = rw [CRM:/oneLayer/2] nick = rw
-
演练场景1,验证tom用户能否checkout下载/CRM/oneLayer/1下的项目oneLayerProject,如图,答案是可以成功下载,说明它拥有/路径下的所有权限。
- 演练场景2,验证nick用户能否checkout下载/CRM/oneLayer/2下的项目twoLayerProject,如图,答案是可以成功下载,说明它拥有/oneLayer/2路径下的所有权限。
- 演练场景3,验证nick用户能否checkout下载/CRM/oneLayer/1下的项目oneLayerProject,如图,答案是不可以成功下载,说明它没有/oneLayer/1路径下的所有权限。
3.4.7 显示日志(Show log)
通过此功能可以查到谁,什么时候,对那个目录下的那些文件进行了那些操作,如下图:
3.4.8 版本库浏览(Repo-browser)
此功能是用来浏览需要查看的资料库,在本地文件夹下点击右键,选择TortoiseSVNàRepo-browser,在弹出的对话框中输入资料库地址,再输入用户名和密码,就能查看到你需要查看到版本库的内容,在这你还能看到那些文件被谁锁定了,如下图:
3.4.9 TortoiseSVN更换或重置登录用户
1,打开SVN的settings
2,找到Saved Data栏,右侧Authentication data项点击清除按钮clear
3,再次打开SVN,会要求输入username和password
3.4.10 如何修改提交仓库地址
如果项目提交地址编写不规范,想重新命名提交个新的地址,但是不用IDEA只用TortoiseSVN情况下如何操作
答案:可以打开“版本库浏览器”,在左侧的目录树中进行创建、移动目录即可。
3.4.11 TortoiseSVN中创建版本库和导入区别
- 创建版本库:对于真实的项目,您将在安全的地方设置一个存储库,并使用Subversion服务器对其进行控制。每个项目都需要创建版本库,才会有.svn文件,才能将项目进行SVN管理(实际是相当于创建了个某一种分类类型的仓库,它里面可以存放很多路径的项目,比如版本库叫“CRM仓库”,那么该路径下存储客户关系管理系统相关的项目;如果版本库叫“粮食仓库”,那么该路径下存储粮食管理系统相关的项目)
- 导入:就是将某些文件导入到已创建版本库中。
3.4.12 合并分支代码
需求:这里为了演练一种场景,我主分支trunk_V01创建一个新的开发分支trunk_V02,然后主分支和新分支一起开发不同通能,最后我要把trunk_V02新分支合并到主分支trunk_V01上,要求是主分支新创建的文件要存在,新分支trunk_V02新创建的文件也要存在,冲突的相同文件名内容解决冲突即可。
说明:主分支trunk_V01里面只有一个文件text.txt文件,内容如图,然后将依照当前主分支创建新分支命名叫trunk_V02