本博文参照自大旭师兄的博文
一、 这篇文章要解决什么问题,能学习到什么?
在android团队的开发中,少不了与队员之间的合作。为了避免我们傻瓜式地复制粘贴对方的负责的那部分功能代码,我们可以用svn或者git的方式来托管代码,实现代码共享。
(使用此svn托管代码前,你必须要有svn的账号,一般是boss买的服务器账号给我们用的,如果是普通几个人的开发建议用git,在楼主稍后另外一篇博文有Git版)
二、问:什么svn?
SVN是Subversion的简称,是一个开放源代码的版本控制系统。到目前为止的使用来说,我更喜欢把他理解为一个放置代码的,并且可以可以和其他人的代码进行融合的服务器。(想要了解更多svn的知识可以点击这里)
三、在android studio中配置svn和使用svn的流程。
下载一个SVN(TortoiseSVN):
运行TortoiseSVN程序,一直点击Next就可以了,不过要记住我们的安装位置,因为等下配置要用。
AndroidStudio中配置SVN:
一、Android Studio配置SVN
Android Studio关联配置SVN很简单,在File->Settings->Version Control->Subversion里面,在这个页面的控制面板中的General中将Use command line client打勾勾选上,然后浏览本地的SVN安装目录,选到"\svn.exe"即可;
在Use command line client下面还有一个Use system default Subversion configuration directory,这个默认是勾选上上的,这个是svn相关配置信息的路径,保留默认路径就行,目前没有发现需要修改什么东西。以上操作如下图:
二、Android Studio项目关联SVN资源库及添加忽略文件
在Android Studio中新创建一个Android项目,在未关联SVN之前添加忽略文件才有效。Android Studio添加忽略文件同样是在Settings->Version Control(跟版本控制有关的设置都在这个目录下)下的 Ignored Files 里,点击加号进行忽略文件的设置,Android Studio默认给出了三种忽略方式:忽略指定的文件、忽略文件夹下所有文件和忽略符合匹配规则的文件。
如图所示:
点击右侧的“+”进行添加,“-”删除;Android Studio创建的Android项目一般需要忽略
-
.idea文件夹
-
.gradle文件夹
-
所有的build文件夹(包括app文件夹里面的build文件夹)
-
所有的.iml文件
-
local.properties (选择第一个Ignore special file就可以看见了)
忽略完文件后,我们进行项目同SVN的关联,在菜单栏我们选择VCS->Import into Version Control-> Share Project(Subversion) ;
在Import into Version Control下有Import into Subversion和Share Project(Subversion)两个选项:
-
Import into Subversion是直接将项目导入到SVN服务器上,但是这样做本地的项目同SVN服务器没有建立起关联,在导入后项目所有的文件都会变成红色,而且在要提交到SVN服务器时会提示项目不是SVN下的工作副本;
-
Share Project(Subversion) 是将Android Studio当前项目同SVN服务器关联起来,但是并没有将项目导入到SVN服务器上,需要在完成建立连接后再次提交项目到SVN服务器。
两种方式都可以实现将本地代码提交到SVN服务器的功能,但是步骤有所不同,先来完成第二种方式的项目同SVN的关联及代码提交,下图既是Share Project(Subversion)方式将本地项目同SVN进行关联的:
之后会弹出选择要分享的SVN地址及其他选项,如下图:
在Define share target下选择第二个可以再trunk下创建你当前项目的文件夹,相应的第一个选项是直接将整个文件都放到trunk文件夹下,第三个在项目文件夹下有创建了一个trunk文件夹,因此建议使用第二中方式;选择完成后点击Share就可以了,会弹出让你选择SVN工作副本的格式化版本(jdk版本),如下图:
选择1.8format。点击OK等待一会就能创建本地项目同SVN服务器的关联了,待项目里的内容变成绿色的即表示已经成功了,如下图所示:
到目前为止只是将项目同SVN服务器建立了联系,并没有将代码提交到SVN服务器上去;如何提交呢,其实很简单,只需点击SVN相关操作按钮里的commit就行了(下图SVN相关操作按钮左起第二个按钮);
点击Commit后Android Studio会先对当前代码进代码分析,如果有错误或者警告会弹出如下的框,如果有错误冲突等需要解决后再提交,如果是警告可以忽略;第一次将整个代码提交到SVN服务器时时间有可能有点长,请耐心等待,之后再创建项目时就不会这么慢了。
成功后我们就完成了新建项目同SVN的关联及导入项目到SVN服务器上了。
三、其他的小伙伴如何从SVN上下载项目,和你进行关联。
-
1选择VCS中的Checkout from Version Control里面的Subversion,然后选择你SVN子目录里面的项目文件:
-
2然后弹出来的窗口都还存放的地址(存放的文件夹名字最好和项目名字一样,要不然它会修改你项目名字):
点击OK后出现:
选择第一个(你自己创建的文件夹),与你项目名字一样的。点击OK后出现这个,选择1.8
点击OK,最下面出现检查。检测完成后弹出是否打开工程,点击YES。然后弹出来的窗口如下面所示,别选择第一个,第一个意思是下载一个Gradle,选择Use default gradle wapper下面一个,用你本地的gradle,然后就大致OK了。
四、Android Studio SVN代码冲突的解决
在使用SVN更新服务器上的代码时,有时会弹出代码冲突的对话框,问你是否进行合并,并提供了三种合并方案:accept yours(使用你的)、accept theirs(使用别人的)和merge(合并);前两个都是进行的覆盖操作,就不多做解释了;当你选择merge合并时,会弹出代码合并对照窗口,一共有三个屏,左右两侧时你和服务器不同的代码并高亮显示不同的部分,带有箭头和叉号,通过点击箭头将两边冲突的代码添加到中间的合并区域中去,点击叉号则辨识放弃那一段代码,待所有冲突处理完成后merge就成功了。