一,图形化操作界面的好处
Svn的图形化操作界面,只需要在对应的用户文件夹中点击鼠标右键,就可以弹出相应的操作选项,比如update,commit。
二,安装步骤:
1,下载:TortoiseSVN-1.8.0.24401-win32-svn-1.8.0.msi,
2,直接无脑安装。
3,安装完成以后必须重启计算机。
三,图标解析:
情景:
1,
创建用户目录后,并通过checkout关联了仓库以后,在用户目录里新建一个文件,刚建立完显示的就是这个图标,也就是还没有通过add添加到版本控制中。
2,
将没有纳入版本控制的文件通过add命令纳入版本控制,之后就变成了这个图标,但是这个文件在服务器上还是不存在的。
3,
纳入版本控制之后,通过commit命令将这个文件提交到svn服务器之后,这个文件将会变成这个图标。
4,
将一经提交的文件进行修改,保存之后,当前这个文件就肯定要比服务器上的版本新,如果是这样的话,就会出现这个图标。
5,
关于这个图标,涉及到一个锁机制。就好比多个人同时可以锁一个门,这个门上本来没有锁,一个人过来,拿着一个锁将门锁上,那么这个锁只有这个人有钥匙,别的人是打不开这个门的,如果别人想打开这个门,必须要等之前的人将将锁打开,并拿走锁,那么下一个人才可以用他的锁将这个门锁上。
这涉及到权限验证,如果一个人对一个文件进行了操作,这个人通过用户名和密码就会锁上这个文件,别的人就无法操作这个文件了。
权限验证:
svn权限设置
*启用权限验证
*文件位置:%仓库%/conf/svnserve.conf
*修改内容
auth-access= write ,确定必须进行验证
password-db= passwd ,确定账号文件的位置
*内容:一行表示一个账号,格式:账号=密码
authz-db= authz ,确定权限文件的位置
[groups]
itcast=user1,user2 # 用于确定分组,多个账号之间使用,分隔
[oa:/] #给指定的仓库设置权限,:/当前仓库的根。如果设置成:/abc ,给指定仓库中的abc目录设置内容
@itcast= rw #给分组设置权限
user3= rw #给指定的用户设置权限
*= #给除已经指定权限用户之外的其他人设置权限。( read ('r'),read-write ('rw') , no access('').)
以上的配置说明了,在oa这个仓库中,user1和user2被分到了itcast组中,itcast组的对oa中的文件的操作权限是读写,user3对oa中文件的操作权限也是读写,* = 表示除了这三个人之外的其他人都是没有任何权限的。
配置好之后,在进行操作,返回我们的用户目录user2,将一个已经提交的文件加锁,右键点击,选择TortoiseSVNàget lock,点击确定,需要填写用户名和密码,这里填写的是刚才配置的用户名和密码,然后这个锁的图标就出现了。
如果别的用户下载这个文件,通过commit提交时,会显示信息,这个文件被用户2锁定,
在点击确定时,会提示输入用户名和密码,正确输入user2的用户名和密码之后,提交,就成功了,这时锁会被释放掉,别的用户就可以再操作这个文件了。
6,
要求一个文件必须加锁,然后才能使用。
选中相应文件,右键,选择property,点击new...,选择Needs-Lock。
选择Locking required(read-only update)。
修改后会先变成感叹号图标,再单独提交这个文件,会提示输入用户密码,假如这次输入user1的用户名和密码,确定后,这个文件就会变成这个图标。
查看这个文件的属性,会发现它已经变成只读的了。
所以这个时候,操作这个文件必须获得锁才能进行操作,例如我们打开这个文件,写点东西进去,保存的时候,就会让你去另存为...。
所以我们要操作这个文件,必须先在这个文件上右键,选择:
Svn get lock...
会提示输入用户名密码,输入我们加锁的用户名和密码,即user1。
确定之后,这个文件的图标就会变成绿对勾,就可以正常操作了。
再次提交的时候,需要输入用户名和密码,输入user1的用户名和密码,提交之后,图标又回到灰色对勾状态。
7,
假如我们的工作目录中,不想让某个文件出现在svn服务器上,也就是说,用户本地有这个文件,提交的时候不提交这个文件,忽略这个文件。
新建一个文件demo08.txt,在空白处点击提交的时候,列表中会出现demo08.txt文件,如果通过忽略这个文件,就可以不在commit时出现这个文件。
点击之后,就会变成这个图标了。
例如我们要将这个demo08.txt文件忽略掉,
再次点击提交的时候,就不会有这个文件了。
不再有demo08.txt文件。8,
通过如下方式将这个文件删除。
这种方式与系统delete方式的区别:
在提交的时候就会看到区别:
这时我们再创建一个文件,就叫demo09.txt,与之前通过svn的delete删除的文件名相同,这时我们会发现这个文件的图标就是这个红叉。一般情况下我们既然删除了一个文件,那么就代表我们不需要了,所以既然已经删除,为什么还要给弄出来?所以这里svn将这个新创建的与删除文件同名的文件就被标识为已删除。
但是如果我们创建了一个demo10.txt,发现demo10.txt不会显示已删除的图标,因为svn将这个系统删除的文件标识为丢失状态,如果又出现一个同名的文件,会标志为与它删除时状态一样的图标。
9,
User1和user2下班之前同时写一份文件,下班时要把这个文件提交到服务器,假如user1在这个文件的开头加了一些内容,user2在这个文件的结尾加了一些内容,这时user1手快,先提交到了服务器,user2在提交的时候就会提示已过期,即需要下载最新版本,那么user2就要先update最新版本,update后再提交,提交完成,会发现这个文件的开头是user1加的内容,末尾是user2加的内容,svn自动将文件合并了,因为修改的位置没有在同一个位置,所以没有产生冲突。
假如,user1和user2在同一个位置进行了修改,提交的时候,第一个人会没有问题,而第二个人就会无法提交,产生冲突。然后这个图标就出现了,同时下面还会多出三个文件:此时demo10.txt文件中出现的内容类似:
Demo10.txt.mine是当前用户写的文件内容,
Demo10.txt.r31是这个用户修改前的原始文件内容,
Demo10.txt.r33是对方修改后的内容。
那么你最后到底需要哪一个呢,svn提供了编辑这个冲突的方案,
弹出窗口:
下面一栏的?表示svn不能识别了。
选择好后
然后观察用户文件夹,刚才产生的那三个文件就已经不在了,
Demo10.txt又变回了感叹号的状态,再次进行提交即可。
提交之后就会变回绿对勾的状态。