版本管理工具介绍——SVN篇
一、版本控制工具的作用
什么是版本控制工具?版本控制工具是团队用来开发软件工程的,个人单独开发只能称得上是写代码。使用版本控制工具可以使软件工程得到保护和起到约束作用。
二、SVN服务器端的安装和配置
2.1、SVN服务器端的安装
(1)双击exe安装文件,直接点“next”
步骤1
(2)不要选择中间那一项,如果选中则没有可视化的界面了,对号勾也不要去掉,如果去掉,命令行里的一些命令就不能使用了(就需要以后在环境变量里添加PATH),点击“next”
步骤2
(3)选择标准版,不要选择企业版(企业版需要money)
步骤3
(4)第一个是SVN安装路径,第二个是仓库路径(代码一旦放置在服务端,就相当于放置在这个仓库里了,以后对代码的增删改的操作都会在这个仓库里,这个仓库一旦没有了代码就真的不存在了,所以仓库这个文件一定要妥善保管并勤加备份)。端口号服务端规定何种端口号,客户端就通过这个端口号联系,后边如果不勾就是用http协议。
步骤4
(5)最后点击“install”
步骤5
2.2、SVN服务器端的配置
(1)首先需要配置一个仓库,这里的仓库可以有多个,每个工程可以放置在不同的仓库里(点击Repositories——>Create New Repository——>起个名称(这里选中Empty repository,也就是只有一个仓库,里面没有内容,如果选择下面的会带有三个文件夹)。
步骤1
(2)选择权限选择默认即可(所有的开发人员,一旦联系上以后,拥有对所有文件的读和写的权限)
步骤2
(3)这个地址也就是客户端和服务端联系时填写的地址(联系以后才可以读文件和写文件)
步骤3
(4)接下来还需要新增两个用户,选中Users——>Create User——>填写用户名和密码
步骤4
三、SVN客户端的安装和配置
1、双击客户端的exe安装,文件直接点击下一步就可以了,只有在选择目录的时候,我们改改目录就ok了!安装完之后,在电脑桌面(或目录等)地方,按下右键出现SVN Chekout就说明安装成功了。
2、第一次安装项目的时候,我们会用到SVN Checkout。我们直接拷贝我们仓库的路径就可以了。例如:我们之前安装svn服务端时的test路径。
3、如果我们的服务端和客户端不在同一台服务器上边,那么之前的127.0.0.1 就要变成我们远程的服务器上边的服务器地址和端口号。
4、当我们从服务器上边下载的时候,我们的项目里边会出现一个.svn文件。我们不要删除,我们后续与远程项目相关的增删改查都会在这里进行记录。
四、SVN的基本操作
【1】新增一个文件(客户端新增一个文件,并把它提交到SVN的服务端)比如在Test文件夹下新建一个Java文件,但是该图标多了一个蓝色的问号,这个蓝色的问号就代表该文件是新增的并且等待被提交的。
【2】提交文件,在.svn所在文件夹下,右击鼠标SVNCommit...,在下面的文件列表里会出现想要提交的文件,Status代表状态不受版本控制,上传之后图标就会变成对号,说明文件已经与服务器上的文件保持同步。
【3】删除文件:直接在磁盘上操作即可(磁盘下的任何操作都属于磁盘操作,所有的SVN操作都需要SVNCommit...下完成)删除SVN里的也需要commit。
【4】也就是客户端执行的任何操作,最终都需要SVNCommit...来完成服务端的操作,同样修改也是一样的,如果是修改的文件Status为modified,如果已经删除了的文件Status为missing。
五、SVN常见问题
5.1、案例1
分支不同 ==> update merge(svn自动合并)分支冲突 ==> 协商解决冲突,选择一个正确的版本覆盖(最新的正确直接Revert最新): 出现四个文件。黄色感叹号代表SVN没办法自动合并,因为A B修改的内容一致。 第一个文件:共同修改内容对比显示。第二个文件:A你的代码 第三个文件:A B修改之前的版本代码 第四个文件:B的代码 解决办法:1.A和B讨论,选择哪个版本。就把那个版本恢复。 恢复方法:比如A的正确,就把第二个文件重命名为A的那个文件名,覆盖。 若想恢复成A B之前的版本,用第三个文件覆盖 若想恢复成B的,也是用第四个文件覆盖,或者在第一个文件右击,revert到现在服务器上的B的版本。5.2、案例2
1、每天早上上班要update SVN,每天下班要commit SVN。
2、查看是谁动了我的代码,右键 tortoise 后查看 log 日志。
3、文件被别人删除,在空白处右击,show log,可以查看整个库的所有增删改查操作记录,如果单个文件还在,只想查看该文件记录,那就在该文件上查看 log(自从新建一个文件后,对该文件的所有操作都会被服务器仓库记录下来,随时可以可别人商量恢复)。
4、权限清空:TortoiseSVN——Settings——Seved Date——Clear clear all。
5、commit 上面有一块区域是做注释的(推荐常用)。
6、良好冲突: 如果A和B都在修改了代码,B先于A上交,当A去commit的时候,就会提交失败,必须先更新你的本地文件,那么B的代码会和A的代码同时存在(两个人修改的不是一个地方算好的情况了)。
7、较差冲突: 有冲突时提交会产生三个文件,.mine是自己改好之后的代码,rx,ry,x,y两个数字较小者是我改之前的代码,数字较大者,是服务端的代码
1)如果要保留自己的版本,就用mine覆盖原来的代码,再次提交
2)如果认为对方是正确的,就revert一下,这个时候已经拿到了最新的代码(不一定非要这样操作,但是这样方便)
3)如果认为上一个版本是正确的,用版本较小的覆盖(直接删除改后缀名)
经验1:如果Commit Failed!就不要点了ok继续按update了,先把自己的代码复制到一边,再把那个文件revert,再update,再把放在一边的文件重命名复制到相同文件夹下,选中两个冲突的文件,TortoiesSVN->diff,左边是最新的代码,右边的是我的,解决冲突之后两个人最好都update一下。
经验2:与历史记录比对:show log之后,同时选中两个版本(比如现在到了第10版,那么要10/9先比较,看看有没有差异,没有差异,则比较9/8版,如果仍没有差异,以此类推继续比较),Compare revisions。