0
点赞
收藏
分享

微信扫一扫

【软件工程】6.svn的使用


上一次我们成功安装了SVN,并注册了服务。我们的重头戏是使用TortoiseSVN这个客户端工具。它可以做好多事情:增删改查,版本校验、冲突解决等全部都可以解决。



Tortoise介绍:


是SVN的一个图形化界面客户端工具,Tortoise安装(1.7+选择安装命令行端可不再需要安装SVN服务器端,因自带有)


完毕后,继承在鼠标右键菜单中(类似window的一个插件)


【软件工程】6.svn的使用_svnserve.conf



既然要用客户端,首先要有一个服务端的代码提供给客户端进行操作的。我们需要提交一个代码给SVN服务端(即后台)。


首先我们要给服务器端设置一下权限。


简单介绍一下版本库各个文件夹的作用:


【软件工程】6.svn的使用_tortoisesvn_02



我们打开conf,来配置服务端的文件信息:


【软件工程】6.svn的使用_svnserve.conf_03



我们打开svnserve.conf修改其中的信息(汉字注释是为了说明,应删去):


【软件工程】6.svn的使用_svn_04



其中的账号密码就保存在与svnserve.conf同一文件夹的passwd文件中:


【软件工程】6.svn的使用_svnserve.conf_05



我们打开passwd,向其中添加几个账号密码:


【软件工程】6.svn的使用_tortoisesvn_06



下面我们开启svn服务器:


在控制台输入svnserve -d -r D:\SVNServer\2015_SVN_1


或者直接创建该服务然后双击启动(一定要用管理员身份运行):


【软件工程】6.svn的使用_svn_07


服务器运行成功:


【软件工程】6.svn的使用_tortoisesvn_08



现在要做的就是向服务器中加代码:


步骤1


【软件工程】6.svn的使用_anon-access_09


结果:


【软件工程】6.svn的使用_anon-access_10



我们在localhost中加入一个文件:


【软件工程】6.svn的使用_svnserve.conf_11



我们要把这个文件加入到代码库中去,首先在文件上点击鼠标右键,弹出菜单,选择SVN客户端TortoiseSVN,选择添加Add:


【软件工程】6.svn的使用_tortoisesvn_12


然后退出来发现桌面的localhost文件夹的图标已经变成这样:


【软件工程】6.svn的使用_tortoisesvn_13



就是说已经有文件添加到代码库中去了,但是还没有提交到服务器进行同步。


然后我们将本地代码提交到服务器:


【软件工程】6.svn的使用_tortoisesvn_14



添加注释后提交至服务器:


【软件工程】6.svn的使用_auth-access_15



输入我们之前预先设置的账号密码:


【软件工程】6.svn的使用_svn_16



提交成功:


【软件工程】6.svn的使用_svnserve.conf_17



提交成功之后我们的文件变成带绿色对勾的文件,说明本地文件和服务器端文件代码内容是匹配、没有改动的:


【软件工程】6.svn的使用_svn_18



我们现在看一下版本库是什么情况:


【软件工程】6.svn的使用_tortoisesvn_19


之后就可以看到服务器端的版本库中的内容


【软件工程】6.svn的使用_svnserve.conf_20


(默认url是svn的,也可以使用http协议)



我们想在服务器版本库查看文件是谁添加的,可以这样做:

【软件工程】6.svn的使用_tortoisesvn_21

【软件工程】6.svn的使用_svnserve.conf_22

可以清楚的看到是谁在什么时间添加了什么样的文件.



我们修改一下本地的工作进度文件:


【软件工程】6.svn的使用_svn_23


保存后发现文档的图标变成感叹号,说明和服务器文件内容不一致了。



我们再提交一次(用第二个人的账号模拟),发现提交成功之后版本号变成了2:


【软件工程】6.svn的使用_auth-access_24


然后文件图标就变成绿色钩钩了,说明和服务器同步了。


如果服务器端版本库中的文件被删除或者其它情况,我们每次开机之后都要习惯性的在本地代码库中更新一下(即同步本地版本库),看看有没有变化:


【软件工程】6.svn的使用_tortoisesvn_25



然后我们谈一下同步的问题:


我们再checkout一个本地版本库,然后更改一下名字,模拟第二个人的本地代码库:


【软件工程】6.svn的使用_auth-access_26



然后两个人的进度和内容不一样:


【软件工程】6.svn的使用_tortoisesvn_27



我们首先提交localhost的文件,然后再提交localhost2的文件,之后我们看看会不会出问题:


发现我们提交localhost2的文件的时候,提示我们文档过期了,需要我们更新文档之后在提交:


【软件工程】6.svn的使用_auth-access_28



于是我们更新一下本地版本库:


【软件工程】6.svn的使用_tortoisesvn_29


然后可以看到我们本地的和服务端的文件的区别:


【软件工程】6.svn的使用_anon-access_30



因为我们和版本库的数据不一样(同一行的数据不一样,不是新增数据),我们还无法提交数据,所以我们要解决本地版本库与服务器版本库的数据冲突问题:


【软件工程】6.svn的使用_svn_31


我们可以看到这里的不同数据,需要你修改成同步数据:


【软件工程】6.svn的使用_auth-access_32



我们根据语句块选择需要进行的操作:


【软件工程】6.svn的使用_anon-access_33



我们让修复bug在前,完成投诉模块在后,最后才测试:


【软件工程】6.svn的使用_tortoisesvn_34


然后点击绿色对号完成冲突的解决。



发现我们的localhost2本地版本库的文件已经变成这样:


【软件工程】6.svn的使用_auth-access_35



然后我们再次提交之后发现提交成功:


【软件工程】6.svn的使用_auth-access_36



然后我们去服务器版本库中去看,发现最终提交的版本是最终整合版:


【软件工程】6.svn的使用_svnserve.conf_37



如果两个客户端提交的文件不在同一行数据不同的情况下,svn会自动进行合并。



如果我们修改了文件而且保存退出了之后,我们想恢复到修改之前的情况,可以点击回滚来解决:


【软件工程】6.svn的使用_tortoisesvn_38



当然,我们也可以将文件跳至任意一个版本的文件:


【软件工程】6.svn的使用_svn_39

【软件工程】6.svn的使用_tortoisesvn_40



所以想取得任意一个版本的代码都是可以的。



导入新的文件,可以将文件放入一个文件夹中,右键点击文件夹就可以上传文件夹中的文件:


【软件工程】6.svn的使用_auth-access_41

【软件工程】6.svn的使用_tortoisesvn_42



打开服务器版本库发现我们的文件已经导入:


【软件工程】6.svn的使用_tortoisesvn_43


接下来一些常识:


SVN使用图标说明:


【软件工程】6.svn的使用_tortoisesvn_44



TSVN的使用基本流程:


【软件工程】6.svn的使用_svn_45

举报

相关推荐

0 条评论