1.公司常用命令:
svn checkout 服务器地址 —username=账号 —password=密码
svn update 更新到最新的版本
svn commit -m “注释” 将本地的代码提交到服务器
svn add 文件名 在添加静态库的时候需要使用,其他时候不经常使用;
2.命令行中版本的回退
3.图形化界面的使用
使用Xcode进行文件添加和进行忽略操作;
4.xcode使用SVN进行开发的注意点:
(1)如果使用到静态库时候需要特别注意,必须使用命令行将静态库添加到svn的管理之下;(动态库只能苹果使用,我们使用的都是静态库);
cd 想要到达的文件夹路径; 在命令行中拖拽找到静态库的.a文件的路径;
svn add 静态库名 :添加静态库
svn commit -m “注释” :提交到服务器的库中;
一、SVN
1.从服务器上下载代码到本地
2.服务器的搭建
需要使用软件:VisualSVN-Server-2.1.2.msi,在windows上安装;
创建仓库,添加用户;在苹果电脑上访问服务器的URL时候需要把url前面的主机名改为IP地址;
3.经理初始化项目 (命名行演示):
(1).经理将服务器已有的内容下载到本地;
注意:(不要删除或编辑下载下来的 .svn文件夹);
svn checkout 服务器地址 —username=mgr —password=mgr
注意:服务器地址为从仓库复制的url地址,只到仓库那一层,不到最子层路径;
(2).经理初始化项目
touch main.m 来创建main.m文件;
svn add main.m 将main.m添加到svn的管理之下
svn commit -m “注释” main.m 将main.m上传到服务器,并添加注释;如果注释后边没有加文件名,就会默认上传文件夹下所有的文件,并更新服务器的同名文件;
(3).查看文件状态:
查看文件是否在svn的管理之下,或者是否进行了修改但没有提交;
svn status 查看文件状态
(4)一些常见的文件状态
‘ ‘ 没有修改
‘A‘ 被添加到本地代码仓库
‘C‘ 冲突
‘D‘ 被删除
‘I‘ 被忽略
‘M‘ 被修改
‘R‘ 被替换
‘X‘ 外部定义创建的版本目录
‘?‘ 文件没有被添加到本地版本库内,不在SVN的管理之下
‘!‘ 文件丢失或者不完整(不识别该文件)
‘~‘ 受控文件被其他文件阻隔
‘U‘ 更新最新的代码到本地(本地有文件的情况下)
‘G‘ 产生冲突后,更新操作去解决冲突,相当于进行合并
4.张三加入开发
(1)将服务器所有的内容下载到本地;
svn checkout 服务器地址 —username=zs —password=zs
(2)svn update 将服务器的最新状态更新到本地,(如果本地存在,就更新;如果本地不存在,就下载下来)
开始开发:
(3)touch person.h 创建文件person.h
svn add person.h 将文件添加到svn的管理之下
(4)open person.h 打开文件并修改
(5)svn commit -m “注释” person.h 上传到服务器
注意,在实际的开发过程中只需要使用:
svn checkout 服务器地址 —username=mgr —password=mgr
和svn commit -m “注释” 这两行代码就够了,因为Xcode开发时候会默认将创建的文件进行添加操作;
5.命令行的其他使用:
简写,版本回退,删除文件,查看版本信息;
(1)简写:
svn co;svn up;snv ci;snd st;
(2)版本回退
svn update -r 5 先回退到某个版本,观察是否是想要的版本;
svn update 更新到最新的版本
svn merge -r7:6 文件名 将第6个版本的这个文件合并到版本7,也就是使用第6个版本的文件
svn commit -m “注释” person.h 将回退后的版本上传到服务器
(3)删除文件
svn remove Person.h 删除文件
svn commit -m "删除了文件" 提交删除
(4)查看版本信息
svn update 更新到最新的版本
svn log 查看版本信息
6.公司常用命令:
svn checkout 服务器地址 —username=账号 —password=密码
svn update 更新到最新的版本
svn commit -m “注释” 将本地的代码提交到服务器
svn add 文件名 在添加静态库的时候需要使用,其他时候不经常使用;
二、新人加入开发
1.(1)向项目经理索要账号密码;
(2)拿到项目文档:需求文档,接口文档;以及效果图;
(3)将服务器已有的内容下载到本地
svn checkout 服务器地址 —username=账号 —password=密码
2.代码冲突
(1)out of date :过期,,本地版本号低于服务器的版本
diff-full:在命令行中展示所有的不同
edit:在命令行中编辑冲突 (一般不用)
mine-conflict:用本地代码来覆盖服务器的代码
their-conflict:用服务器的代码来覆盖我的代码
(2)在公司中解决冲突时候一般使用:
postpone:延迟解决冲突,展示所有的冲突文件,手动解决冲突,在有冲突的文件里面手动解决,然后使用下面一行代码更新;
svn resolved 文件名 :手动解决了哪个冲突
svn commit -m “注释” 将本地的解决冲突后的代码提交到服务器
(3)注意:
尽量在修改文件之前update;
如果修改公共文件,最好跟同事说一声,让别人先不要修改,修改完成之后,让别人更新;
(4)回退本地新增的内容
svn revert person.h:将本地新增的内容(没有提交的服务器),删除
三、图形化界面的使用
1.安装使用cornerstone,使用Xcode进行文件添加和进行忽略操作;
(1)添加一个仓库,添加完仓库后,进行checkOut操作,(注意checkOut时候要选择最新的版本1.7进行),进行初始化,在xcode中添加文件;
(2).在点击提交之后选择commit Changes ,会弹框提示是否忽略不识别的文件,选择忽略ignore;
(3)然后需要在cocoaconer中将要用户数据文件夹选中点击右键删除,删除两个xcuserdata文件夹;
删除以后,选择整个文件夹,点击commit再次进行提交;
(4)然后来到xcode中,进行文件的简单编辑和移动;再次来到cornerstone中会出现两个带问号的xcuserdata文件夹,右键选择进行ignore;
(5)在c中点击update,做一次更新操作;
(6)测试是否修改忽略操作成功,编辑一个文件,使用xcode中的sourceControl中的commit提交,如果现实要上传的也是一个文件,就表示忽略操作成功;
当忽略操作修改完成后,下次修改代码后可以直接使用xcode中的sourceControl中的commit提交;
(7)然后就可以进行开发了
2.需要忽略的文件 :(下面三个文件都保存在xcuserdata中)
(1)xcode会默认记录之前停留的文件,下次打开仍然会停留在这个文件,不需要共享;
(2)xcode会默认记录之前目录的打开情况,不需要共享;
(3)断点信息不需要共享;
3.使用xcode进行多人开发
(1)添加张三的仓库;
(2)选择仓库,点击checkOut,将仓库中的文件下载到本地;
(3)打开xcode进行编辑工作,当新建一个类之后,要提交的话需要同时提交配置(project Setting);如果对其中的文件进行了移动的时候,没有进行修改的话,也需要提交提交配置(project Setting);
(4)使用xcode解决冲突,当两人同时在一行提交了代码时候,就会产生冲突,点击出现红色C的文件来解决冲突;
4.xcode使用SVN进行开发的注意点:
(1)如果使用到静态库时候需要特别注意,必须使用命令行将静态库添加到svn的管理之下;(动态库只能苹果使用,我们使用的都是静态库);
cd 想要到达的文件夹路径; 在命令行中拖拽找到静态库的.a文件的路径;
svn add 静态库名 :添加静态库
svn commit -m “注释” :提交到服务器的库中;
(2)使用storyboard的注意点
当两个人在storyboard中的同样的位置添加了控件时候,后添加的一个人再提交的时候会产生冲突,这时候即便在这里解决了冲突之后,再点击storyboard会发生打不开的情况;
这时候需要右击打开storyboard的源代码,里面可能会发生标签嵌套,将嵌套的标签解决掉,就可以打开了;
如果约束出现冲突,需要修改约束;
(3)注意:在项目中,如果能使用xib就尽量使用xib;如果使用到的storyboard,尽量保证只有一个人在使用;
5.Xcode中使用checkOut
(1)在Xcode中,设置偏好设置,选择Accounts,点击?进行添加仓库;
(2)添加完成SubVersion仓库之后,选择sourceControl,点击CheckOut,选择想要下载的仓库,并保存,就将仓库里的代码下载下来了;
6.公司开发技巧
(1)为了避免冲突,尽量写一些代码就提交到服务器,实时给服务器的代码保持同步;
(2)尽量提前半小时提交代码,如果产生冲突可以有时间处理;
四、目录规范的演示
1. 1> Trunk :主干 目录,当前开发项目的主目录;
目前项目正在开发的版本;
通常进入公司之后在该目录下开发;
2> Tags:标记 目录,通常作为重大版本的备份
存放已经上线的重大版本;
3> :分支 目录,添加非主线功能时候使用;
当发生重大bug或者有新需求时;
2.当程序开发完成后,需要进行备份;
(1)先在cocoaconer中,使用command+R,将仓库中存储的东西刷新一下(因为commit上传后不更新呢的话,cocoaconer中不会现实上传的内容);
(2)cocoaconer中,右键点击文件夹选择tag,设定一个tag名称,选择最新上传的版本,并保存到tags文件夹下;弹框提示输入这个版本实现了什么功能;成功备份到了tags文件夹中;
3.当之前的版本出现bug需要修复时候:
(1)来到tags文件夹中,将保存的文件夹右击选择branches,将文件拿到branches文件夹中,进行bug的修复;
(2)branches文件夹中的文件checkOut到本地,进行程序bug的修复;修复完成后点击commit进行提交;
(3)将修复完的版本备份到tags中:使用command+R,将仓库中存储的东西刷新,并进行重复第2步中的步骤,进行备份;
4.将修复bug后的版本合并到里面;
在正在进行开发的项目中,由于是使用合并之前的版本进行开发的,也会出现相同的bug,所以需要将修复bug后的版本合并到里面;
(1)cocoaconer中点击选择正在项目,点击merge,点击选择更新(将之前commit的操作更新到cocoaconer中);
(2)点击merge form,选择修复bug完成的版本,点击mergeChanges进行合并;
(3)然后将合并之后的文件在Xcode中进行commit,到服务器上;
将有备份后的branches中的文件可以删除