SVN集成图形化操作界面

来源:互联网 发布:域名服务器的作用 编辑:程序博客网 时间:2024/06/08 04:19

一,图形化操作界面的好处

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又变回了感叹号的状态,再次进行提交即可。

提交之后就会变回绿对勾的状态。