Android Studio下SVN的用法(1) - 初识SVN
前言
这几天公司又来了新人,之前都是一个人开发的项目现在需要合作开发。所以不可避免的需要使用版本控制工具。
公司使用的是SVN,网上有一大堆教程,但是发现对于新手来说,特别是从来没有接触过的人来说,往往都 说的不是很详细,甚至可以说基本没有照顾到这些方面。不要问我为什么这么清楚,因为被坑的不行了……..
PS:本篇文章是介绍AS下SVN的使用,所以可能会跟网上的教程不同
使用
下载及安装
首先前往官网下载SVN客户端,官网上下载可能比较慢,这里提供一个已经下好的安装包
这个是SVN客户端,另外还有个一服务端,但是一般开发开发使用客户端就足够了,服务端是提供个老板和或者主管使用的
下载完成之后直接安装就OK,安装目录随意,但是目录总不能含有中文路径
配置
一般在公司使用的话公司都会给你提供一个用户名密码,提交的时候会显示你的用户名,这样就可以清楚的知道是谁提交的代码导致整个项目崩溃的,红红火火恍恍惚惚 ~~~~
万一账号密码忘了也不要紧,找你们老板或者组长要去,不过可能会被骂、、、
下面重点介绍在AS下的配置
首先在AS里添加SVN的启动路径,按设置路径在Use Command line client
下选择svn.exe文件
若该路径下没有svn.exe,那么可能是安装的时候漏选了一项插件
如下图,将中间那个Crash Reporter
勾选上即可
启动配置完成后需要,配置忽略文件,因为可能由于AS版本或者gradle版本不同导致每次都需要配置或者升级,所以一些文件是不需要提交的,如下图
点击右上角添加忽略文件,默认进入项目根目录
忽略文件一共三部分,下面一一介绍
- 系统默认添加的忽略文件
- 手动添加,通常AS项目应该忽略的文件或者目录
- 手动添加,若项目中还需要忽略其他的,如编译项目作为依赖需要忽略
如何添加?
依次为
- 忽略的文件
- 忽略的目录
- 根据语法匹配,如 *.iml 表示忽略所有后缀为 iml 的文件
与远程仓库关联
这里有两个方式可以选择,直接导入 和 关联项目,这里推荐第二种, 直接导入可能会出现一些奇怪的问题
点击 Share Project
弹出如下窗口
上面是选择仓库地址,第一次可能需要添加;下面是选择目标路径,因为仓库里可能会存在分支等多级目录
选择完成之后会提示提仓库不为空是否建立关联,不够一般第一次的话仓库都是空的,确定即可
提交的时候会进行代码检查,这里推荐选择1.8版本,同样的另外两个也会出现一些奇怪的问题
选择之后会提示正在建立关联,等待完成即可
关联成功后工具栏会多出两个图标,表示提交和更新
提交(Commit Changes)
通常将自动提交后自动更新勾选上,左侧为待提交文件列表,可以选择提交哪些文件;左下为提交的信息,用于简单描述本次提交的内容,建议在提交的时候最好写上提交信息,这样到时候出错了也好及时定位
然后点击Commit
,之后会进行代码检查,如果代码没有错误就可以确认提交了,警告通常可以忽略
更新(Update)
更新的时候有两个选择,通常选择第二个,默认版本为HEAD
表示更新当前仓库的版本;第一个选项如果你项目里有分支的话才会用到,可以选择更新不同的分支
这里还要说一点的,也就是版本控制最重要的功能之一 回滚 ,可以选择更新历史版本。点击HEAD
右侧的三个点
- 提交的版本号,通常每次提交都会自动加上一个版本号,有序排列
- 提交的用户,即谁提交的代码
- 提交时间
- 提交信息
注意
如果按照上面的步骤你可以成功的将项目与SVN进行关联,但是前提是仓库的是空的,也就是第一次使用的时候。如果你不是第一次使用或者你是中途加入到项目组里的你就会发现问题;SVN是可以上传的下载的,这时候你肯定会说:“我可以直接下载啊”,确实可以下载,但是现在有一个问题,怎么下载?下载到哪?因为下载的话是需要在关联的前提下进行的,如果你新建一个项目,那就必须报名路径一样,而且如果是新建的话SVN下载的话会单独在你当前项目里新建一个文件夹用于存放你仓库的文件,而不是直接覆盖根目,而且这种方法还会有这样那样的问题**
别着急,SVN早就为我们想到了这一点,实质上也是下载,不过是将上面的功能全部帮你做完了
Checkout
功能
checkout 这一个功能特别方便,只用选择对应版本控制工具,并输入相应的项目地址,AS就能全自动的帮我们将项目下载下来,并且自动添加忽略的文件直接导入
然后选择Checkout即可
PS:之前不知道有这个功能,只能直接拷贝同时的项目,然后导入的时候各种出问题。因为仓库里项目文件上传的时候添加了忽略文件,这就导致了一个比较尴尬的问题,忽略文件怎么办,新建个一空的项目还得保证包名一样。。。。。。过程我就不说了,坑的不行不行的了
遇到的问题
之前做支付因为jar包的问题导致项目无法运行,回滚之后可以运行,但是直接更新最新的版本无法运行。这样就产生了一个很尴尬的问题,如果在提交的话也只是添加新的内容,并不会覆盖历史内容,所以只能在重新来一遍,将仓库里的东西全删了,重新提交一遍。目前只能想到这种办法,可能是一些地方没搞明白。
尾巴
最开始因为项目更新的问题翻遍了教程,弄了一下午!最后发现新建个项目直接下载是行不通的,只能导入已关联的项目。由于没人指点,所以说起来都是泪啊,为什么越是简单的问题越是被忽略呢,可能是因为那些大神觉得太简单了,理所因当就该知道吧
以上是个人见解,由于是初次接触所以只了解基本的用法,如果有不对的地方还请指正;不过就文中介绍的这些,对于一般的项目来说就足够了,如果项目大了的话还有涉及到一些高级的用法
下一篇会更新代码冲突及如何解决的问题
附录
代码颜色介绍
- 绿色:新建的文件
- 蓝色:更改过的文件
- 红色:冲突文件
- 黄色:忽略文件
- 白色:普通文件,表示冲突解决或者提交完毕之后的文件