首页 > 其他 > 详细

SVN的使用

时间:2016-04-29 17:13:03      阅读:240      评论:0      收藏:0      [点我收藏+]

---------------------------------------------------------------------cornerstone使用 -----------------

安装完cornerstone后,双击进入cornerstone图形化界面:

技术分享

上图中“远程svn服务器仓库”其实是和svn服务器建立连接后的一个映射。接下来,项目经理需要先把服务器完整的目录下载到本地,然后初始化项目。

1.连接仓库:

技术分享

2.连接成功:

技术分享

3.点击“Checkout”,下载仓库所有的内容(本例中是指下载远程仓库的目录结构):

技术分享

4.此时,“本地svn目录”下已经有了远程svn服务器test仓库的所有内容(code文件夹和doc文件夹):

技术分享

---------------------------------------------------------------------项目经理初始化项目 ----------------

1.用Xcode创建一个项目,把项目添加到code文件夹下:

技术分享

2.默认项目创建好后,所有相关文件的状态都变为了A(Add),代表已经在svn管理之下,但是未提交到svn服务器。

技术分享

cornerstone上的本地目录(working copies)已经有了项目文件:

技术分享

然而,此时远程代码仓库仍然没有代码,下一步需要commit本地代码到远程代码仓库。

cocornerstone界面刷新服务器代码仓库快捷键:command + r

3.提交本地代码到远程仓库:

用cornerstone commit:

一般,初始化项目的时候,第一次commit项目,不在Xcode中提交项目,因为,除了默认的需要忽略的文件,还需要手动的忽略一些不需要上传到svn服务器代码仓库共享的文件,Xcode做不到这一点。cornerstone能够帮助项目经理手动忽略一些文件,所以,此处我们用cornerstone演示怎么手动忽略不需要上传的文件。 

cornerstone会自动帮我们识别,哪些文件不需要提交,哪些需要提交。 

技术分享

4.添加注释,提交初始化项目到服务器(不需要改变勾选项,cornerstone默认会忽略不需要上传的文件)

技术分享

 

5.查看远程仓库是否已经有了被commit的项目:

技术分享

当然,

被commit成功的文件,其在Xcode中的A(Add)标记也会消失:

技术分享

 

6.此时,初始化项目工作还没有完成,还需要手动忽略一些cornerstone没有帮助我们忽略的文件

需要忽略的文件如下:

技术分享

7.先delete需要忽略的文件夹:

技术分享

delete之后:

技术分享

8.再commit一次该项目(因为在delete之前,我们已经commit过一次项目,所以需要再次commit删除了文件夹后的项目,更新远程仓库,使之保持同步)。PS:一般commit不成功,会报错,这时,需要先update,然后再commit。

技术分享

9.然后再右键需要忽略的文件(夹),点击ignore

技术分享

10.最后再来一次commit(前后一共3次commit)

怎么验证所有需要忽略的文件都已经全部忽略掉?

只修改了一个文件,如果commit的时候系统也只是commit被修改的那一个文件,说明忽略成功(所有需要忽略的文件都已经被忽略),如果修改了一个文件,commit的时候系统却需要commit多个文件,说明还有一些文件没有被忽略。

技术分享

 

11.解决冲突(1):如果在同一行都输入了内容,就会有冲突,对应的文件会显示C

 

双击显示C的文件,视情况保留代码

技术分享

 

技术分享

 

 

解决冲突(2)

在创建一个新的类的时候,project.pbxproj(也就是project settings)文件会发生改变,所以说当别人创建了一个新的类,并且提交了project.pbxproj这个文件,在你又创建新的类之后,在更新(update),这个时候就会出现冲突.如果不解决,则xcode的工程目录打不开如下图右边所示

技术分享解决冲突:双击显示带C 的文件

打开之后代码非常不好看,一定要睁大眼睛去看冲突,如下图

技术分享

 

技术分享

 

 

 

 

 

 

 

 

解决完之后.关闭文件并且点击解决

技术分享

点击解决之后技术分享

 

 

解决冲突(3):看上面的源代码是不是很蛋疼啊,稍不注意,就会删掉一个东东,那就会更麻烦

解决方案:不提交project.pbxproj 文件

如图所示

技术分享

 

但是,这样还是会有问题的哦,xcode能正常打开

究竟是什么问题呢,编译或运行时会出现下面错误

因为没有提交project文件,所以就不会把该类添加到xcode中,解决方案,直接showInFinder,找到该文件,拖到项目当中去

是不是很麻烦啊,最后会给大家提供更好的方案,但是你得按照我说的去做哦

技术分享

 

12.删除了某个类

技术分享

删除类之后,该类会产生一个 !号,在这个时候如果提交上去,别人更新之后还是会有这个类文件存在的

技术分享

解决方案,选中显示!的类,右击 选择delete,点击之后 ! 变为D 这个时候就可以提交了啊

 

 

 

 

 

 

 

 

————————————----------------------------—————————Xcode 进行checkout及update.  commit

 

1.点击Xcode  选中左上角  Xcode

技术分享

 

 

2.点击 Preferences

技术分享

3.点击 Accounts

技术分享

4.点击左下角,加号,添加仓库

 

技术分享

 

5.  填写相关信息

Address 为地址  例如:https://192.168.25.254/svn/group1/

Type 类型  必须选择Subversion  不要选择git

User Name  为用户名

Password    为密码

 

最后点击添加  

 

技术分享

6.点击 Check Out技术分享

 

7.选择刚添加的远程仓库,并且选择存放的地方

技术分享

技术分享

8.打开Xcode  进行代码的编写,对应着commit  update  和git提交类似

 

9.在commit的时候有事会出现提示框,提示版本过期,必须update

 在update的时候有时会出现冲突,然后必须解决冲突.

1. 冲突截图
2. 解决冲突

 

技术分享

技术分享

10.解决完冲突之后,在进行文件的提交

A 为新创建的文件

M 为修改的问价

打对勾说明这个文件需要提交

 

注意:project  settings 文件的提交  和使用软件提交类似

技术分享

 

 

 

总结:

需要忽略的文件:

1.Xcode默认会记住我们当前正在编辑的文件,也就是上次退出项目时停留的文件,下次打开项目会停留在该文件。我们不需要把这些信息共享给同事,所以需要忽略。

2.Xcode会记录目录的打开情况。同事不需要共享。

3.断点信息。同事不需要共享。

以上三个需要忽略的信息,都在xcuserdata 文件夹下,所以只需要忽略xcuserdata文件夹。

至此,项目经理用cornerstone初始化项目,忽略文件等操作已经完成。

 

————————————----------------------------—————————cornerstone的多人开发——————————————————————————----------------------

因为cornerstone根Xcode相比,能够更好的忽略文件,所以除了项目经理第一次初始化项目的时候需要用到cornerstone,其他时候用Xcode的source control的命令就可以进行源码的update和commit。

新人加入:

1.新人需要做的第一件事情

和项目经理要svn的服务器地址/svn账号和密码

产品需求文档

接口文档

效果图

2.下载服务器的源代码

svn checkout

新人刚到公司,项目经理不会分配write代码的权限,所以只能先阅读公司的代码

拿到账号密码后,check out源码

如果新人修改了代码并且也commit了

其他员工需要update

新员工给项目增加了一个类,此时这个类文件变成了A(Add),此时需要commit,但是project setting也需要被提交。因为project setting记录了目录的结构情况,添加、删除、移动文件位置影响了目录结构,所以也需要提交project setting,不能忽略。

 

 

——————————————————---------------------------------————解决冲突—————————————————————————--------------------------------

两个人前后都改了同一个位置的代码,先改代码的人先commit。后改代码的没有update就commit,此时就会产生冲突。例如:

经理->update->修改了第99行代码->commit;

张三->修改了第99行代码->commit。此时就会冲突。

 

多个人同时修改storyBoard的后果,storyBoard冲突,导致storyBoard打不开。

和代码冲突类似,如果先往storyBoard的同一个位置添加了一个控件,并且后者在不知道前者在同一个位置添加了控件的情况下也再该位置添加了一个控件,那么两个控件在storyBoard上的位置冲突,后者commit会报错。

建议:尽量使用xib,这样可以避免多个人同时操作storyBoard。

 

--------------------------------------------------

—————Xcode的checkOut和svn使用技巧—————————————————————————-----------------------

1.尽可能修改文件之前先update文件,写一些代码后就立即提交到服务器

2.尽可能在下班之前半小时就提交代码,这样可以预留出来半小时解决可能存在的冲突

3.修改公共文件之前尽可能和同事说一声,修改完成后让同事及时更新,不要做哑巴式程序员,多沟通才能避免一些不必要的冲突和误会,不仅是体现出来对工作的认真,也是对同事的尊重。

 

———————————————————————------------------------------svn目录结构——----————————

正规项目的SVN目录结构一般有3个文件夹:

trunk:主干,当前开发项目的主目录

branches:分支目录,添加非主线功能时使用,开发测试之后,可以合并到主干项目中

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

在svn服务器上再次创建一个仓库,这个仓库死真正的仓库,包含了trunk、branches、tags三个文件夹,模拟开发、修复bug、合并版本的流程。

1.创建仓库

技术分享

2.命名仓库

技术分享

 

常见问题

技术分享

技术分享

这个错误在用xcode 下拉或更新的时候会出现

只需在终端敲上一行命令即可:svn lshttps://192.168.25.254/svn./group1(即服务器地址)即可

回车之后输入P 之后输入密码

技术分享

在commit的时候会出现这个错误,意思是当前版本过去

解决方案:先update 在提交

 

技术分享

这个问题在用xcode打开工程时会出现

解决:必须点左边的Don’t  否则会出现问题

 

最后给大家提供最优提交方案

1. 务必做到小组人员勤更新,勤提交
2. project.pbxproj文件提交,务必做到小组人员创建新的类的时候进行update,创建好类之后进行commit,这样就能做到project.pbxproj文件的冲突产生
3. 利用xcode进行更新并且提交(因为xcode解决冲突的时候比较好看,一左一右可以对比,就不用瞪着大眼去看了),遇到特殊情况(如添加了图片素材,或者有.a文件的时候,用CornerStone提交,因为xcode有时提交素材提交不上去.并且添加.a之后,得在终端把.a文件添加到工作目录)
4. CornerStone会默认忽略.a文件技术分享

点击偏好设置,去掉即可

5. 删除类的时候也必须进行commit哦
6 版本回退及跳转还在总结中

SVN的使用

原文:http://blog.csdn.net/antsuperman/article/details/51247376

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!