您的位置:首页 > 移动开发 > IOS开发

使用svn删除Xcode工程中的文件

2015-06-11 17:17 435 查看
这个问题困扰我好久,一直觉得删除受svn管理的文件就是一个梦魇。
今天同学遇到一个文件重复定义的问题,导致整个工程无法编译,解决的办法是删除之前重复定义的文件,使用自己的命名规则来命名一个新的文件。

那么问题来了!怎么来删除一个已经收svn管理的源文件呢,而且还是在XCode中?

0、写在前面
在我之前的项目中就有很多这种遗留问题,如,之前使用一套UI界面,添加进去之后,过几天,又换了;导入的一个第三方库,使用几天之后,发现严重的内存泄露问题,不得已只能更换新的第三方库。最终导致整个项目中存放了好多的“垃圾文件”,这些垃圾文件怎么处理呢?

1、删除?是的!
如果是一些垃圾文件,你可以不去理会,但是,别人会埋怨你的(想一下,如果是办理交接,那人得哭啊)。但是,对于需要修改名字的必须删除,然后新建。

2、怎么删除?继续看
由于XCode的特殊性,你的源文件,不仅被svn管理,还会被Xcode的一个文件所管理,这个文件就是project.pbxproj,对他既爱又恨,爱他,是因为,他省掉了程序员开发过程中的麻烦(个人觉得,之所以,你能创建一个文件,就能随时随地引用它,就是他的功劳),但是,在协作开发的过程中,它给程序员带来的痛苦也是不小的,我们知道在版本控制软件使用的过程中,一个大忌就是多人对同一个文件做处理。没错,你对XCode工程中的每一次新增文件、删除文件(引用/移到废纸篓)、修改文件,都会间接的对project.pbxproj做出改动(主要是增加和删除一些记录,这些记录就是XCode管理文件所使用的)。

那么问题又来了,如果在一次update之后,两个人都是最新的版本,其中的一个人,新增了一个文件,而你删除了一个文件,恭喜你,你们两个的这次提交就会冲突了,先不去想怎么解决这个冲突,先来看一下冲突的原因。首先,新增文件的一人,提交了svn,他没有什么问题,因为在这之前,没有对project.pbxproj做出改动,svn会比较,新增了一些记录,它的处理就是,把这些新增的条目添加上就好了。但是轮到你,悲催了,你需要更新服务器上最新的代码(当然第一个人也需要update,但是,在update的过程中,没有发现差异),一个是你svn给你改的,另一个是你自己的改的,这个文件必然冲突。怎么解决这个问题呢?我跟人觉得方案是这样的。如果一人需要更改文件的目录结构,一定先确保其他人没有改动过,然后,你再做增删操作,接着提交,把新增或删除操作,同步到svn上,并且尽快告知所有人,更新一下svn,以免影响别人的操作,或者造成,同时操作。

说了这么多,还是没有提到怎么删,莫着急,你想要的来了。

3、哪些步骤?就三步!
没错,就三步!
使用svn的客户端或者terminal终端,使用svn的删除命令,把你需要删除的文件删除掉。
如果第一步能正确的操作,那么你会在XCode的文件导航栏上看到,你删除的文件变红了,如果是,请继续,这步更简单,直接右键删除那些变红的文件。
如果上面的你都做好了,那么很简单,提交的代码,到svn吧,但是,一定要写好log奥
问题主要是在第一步,怎么使用svn的删除命令,相关的网上介绍有很多,可以自行查阅,为了您的方便,就删除命令描述如下:
#svn del file_path // 其中file_path就是你要删除的文件的路径,这里可以使用相对路径的
如,在test文件夹下有一个源文件foo.swift,其相对目录机构是这样的test/foo.swift
使用terminal终端,cd到test目录先,只需要执行
#svn del foo.swift 
就可以,是不是很简单!
如果你使用的是svn的图形化界面工具,也是很简单的,下面演示一下使用Cornerstone删除一个文件Note.swift



在上面的界面中选中最后一项”Delete”,就OK啦!

别忘了,最后需要提交svn服务器奥!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios Xcode svn 删除 文件