SVN使用笔记

 

一、基本了解 :

1.SVNCVS)版本控制策略: A员工check out公司的版本 然后进行修改 然后进行提交,提交前进行update update服务器最新的代码后进行commit 提交。当我们修改完本地版本后,进行提交,这时候如果你的代码跟服务器的不一样,也就是有人已经commit了,那么svn就会报出 “out of date”,我们需要先更新本地的代码,让本地的代码与服务器的代码一样,然后进行commit 这样svn服务器的数据就会被修改,这里我们需要在update阶段进行代码冲突的解决。

二、服务端配置

1.服务器的装载(存储源代码):1.Windows上按照 visual SVN serve配置,创建repositories,user

2.服务端的使用

创建代码库repositories,创建用户,权限控制,用户分组

User权限控制 : 右键 -> properties 这里可以对用户进行管理分组,让特定人员 访问特定的文件

Group:是用来分组的工具,可以把一些特定的用户分在特定的组,控制其访问特定 的内容,达到权限控制的作用

三、客户端软件使用(命令行)

1、简单访问:客户端对服务端进行访问,可以在浏览器当中输入服务端的ip地址就可以进行访问了,但是这里需要账户

2MAC的命令访问:先要选择好Xcodecommand line(位置:Xcode -> preferences -> locationsXcode是有集成svn)

3svn的常用命令:checkoutcommitupdate 使用方式自己学习使用 svn help 查看,svn --help 获取所有命令,svn help 指令 获取详细指令的试用方式

4、例:svn checkout [url地址] [本地存档路径这里可以直接跳到这个目录下,然后进行checkout就直接到这个目录下了,如:svn checkout http://192.168.1.110/svn/QQ/ --username=123 password=456

svn commit : 这个命令的使用要注意:第一次使用的时候要注意把要提交的文件 加入版本控制当中,具体的做法就是 svn add 文件名 , 把文件加入到svn 的版本控制之后就可以提交了,提交 要注意 添加 备注信息,所以具体的写法是 : svn commit 文件 -m 备注信息。 

5、其他 : 可以用svn status 查看文件的状态,了解文件是否提交或是更新,各种状态查看 svn help status

如何学习一些新的指令,一般就是 工具名 --help 比如我们这里学习svn的使用,我们就可以敲 svn --help OK了 , unix 一些常用命令

四、SVN冲突解决

1.冲突出现的原因 : 当不同的开发人员修改了同一行代码的时候,这是我们提交源代码的时候就会出现冲突。 出现的错误提示 :...is out of date...

2.原因分析:这是因为服务器的版本号大于你本地的版本号,这是就会出现无法提交的情况(每次提交svn的版本号都会+1),只有当本地的版本号大于或是等于服务器端的版本号才能够提交

3.解决办法:先更新再提交,一定要先更新再提交;如果修改的数据不在一起,也就是不在一行上面,就会顺利的更新完,然后提交我们的代码即可,如果修改到了同一行代码,这时冲突就出现了

4.冲突:冲突的命令行提示:conflict discovered(发现冲突) 

select(选择解决办法):

  mine-conflict:使用自己的代码 ,这时本地的代码会使用自己的代码,不会使用服务器的代码,然后提交就会把服务器端的代码给改了,服务器端就会变成自己的代码

  theirs-conflict: 使用服务的代码,类比mine-conflict

  postpone:自己人工处理,选择这个会多出现三个文件:.mine文件、.r版本号文件、.r版本号文件,这三个文件分别是自己的备份,本地版本的备份,服务器最新版本备份。同时你的文件也被修改了,里面成立这样一种模式:<<<<<<.mine 这里写的是你的修改后的代码 ====== 这里是 服务器上面的代码 >>>>>>>> .服务器版本号

要做什么修改,直接在上面修改就行,最好要去掉<<<..>>> 等符号

最后,修改完之后要告诉svn我们以及修改好了:svn resolved 文件名(冲突的文件),然后你就见到那三个文件被删了,然后在提交就OK了

5. 其他一些常用功能:删除,回复到指定版本,具体查看svn帮助

五、mac端svn第三方管理工具:CornerStone,Version ----其实第三方工具就是命令行的图形化,命令行熟悉了,瞎搞搞都会的,不具体说明了,推荐使用CornerStone

六、xcode下的svn使用:

1. accounts链接服务端 2. checkout代码

注意:文件“user...state”是本地用户缓存文件,是不需要纳入版本控制的,我们只需要提交修改了的工程文件,xuserdata的缓存文件特别恶心,有时候如果提交、更新操作不好用,一定要去看看缓存文件,可删除、忽略(右击),建议下载导公司的这个文件就把它删掉。

3. 反悔:以前用来控制xib与控制器连线的那个按钮右边的那个按钮可以进行版本控制,部分代码的撤销

4. 冲突解决:Xcode下就是使用代码变更的 中间的 那个小按钮来控制冲突的,特别注意:Xcode的xib,storyboard,本质都是用xml写的,如果程序员同时修改某个图形化界面,这里产生的冲突非常难解决,所以强烈建议在公司中界面storyboard,xib只能由一个人改 ,如果真的发生了,第一种方法就是把自己的修改的界面先移出来,再去更新服务器代码,然后把自己的贴上去,第二种方法就是改源码,难度系数非常高。

七、SVN目录规范

1.正规项目的SVN目录结构一般有三个文件夹(这几个文件在创建代码库的时候有这个选项的,注意下这个,然后选上就ok了)

trunk : 主干,当前开发项目的主目录,在这里面做最主要的开发

branches:分支目录,可以做别的,修改什么的,最后也可以合并到主干项目中,在这里面解决bug

tags:标记目录,通常作为重大版本的备份,这这里备份

我已经把流程给画了下来,图示已经很好的说明了这几个文件夹以及各个功能。

2. 分支合并

在Xcode的datasuorce里面操作branches,如果没有就需要配置一下

八、SVN使用建议

1. 经常更新代码

2. 提交没有报错的代码

3. 不管是提交备注还是自己的代码注释一定写清楚

4. 不要提交多余的文件

原文地址:https://www.cnblogs.com/dlx-Blog/p/4344123.html