浅谈Windows下SVN在Android Studio中的配置、基本使用及解除关联
看到网上很多关于svn环境配置和关联Android-Studio的很多博文,发现很零散,想集大家所长整理一下:
在AndroidStudio中开发版本控制中,除了Git就是SVN,和Eclipse不同Android Studio没有提供单独的插件,只能和SVN客户端关联使用,和Eclipse安装有很大区别,下面介绍在AndroidStudio中SVN的配置和使用。
如果已经搭建好了服务端,只是在日常工作中import和checkout代码,只需下载TortoiseSVN客户端 就行,完全可以跳过以下步骤: 建立SVN版本库 (Repository)、 配置用户和权限 。
一、SVN的安装
到TortoiseSVN官网下载最新的软件,也可以在Subversion中文站 找到相应的软件。
我的64位系统,安装 TortoiseSVN-1.8.3.24901-x64-svn-1.8.4 版本
安装好之后在系统环境变量中找到“path”,然后在变量值加上";默认目录\TortoiseSVN\bin"(引号里面的是要增加的内容,当然你的路径不一样肯定跟这里的不一样的,记得那个分号,那是跟其他值隔开的,一定要加上。)。增加完以后,可以在cmd里面输入 svn -version 测试一下是否配置成功。
注:默认安装在C:\Program Files\下
安装完成,启动命令行,输入: svn
如果提示:'svn'不是内部或外部命令,也不是可运行的程序或批处理文件。
可以通过以下方式解决:
Eclipse都是直接安装插件就可以了,AndroidStudio不行,只能通过关联SVN客户端,需要特别注意的是安装SVN时必须安装command line 功能,只有安装带有 command line 功能的 SVN 客户端,AndroidStudio才能使用。安装SVN时需要用户自定义选择 command line ,默认是不会自动安装的,如下图:

需要选择安装 command line 功能

直到启动命令行,输入: svn
提示:使用"svn help"得到用法。配置完成。
二、AndroidStudio中关联SVN
SVN安装完成后,打开 AndroidStudio 中的 settingS 配置面板,找到Version Control-->SubVersion如下图:

General选项卡下配置SVN的路径,Use Command Line Client 输入框最右侧有个浏览的按钮,选择浏览到你本地安装 TortoiseSVN 的 svn.exe 文件路径,如下图:
注:svn.exe 文件图标不是小乌龟奥,不要看错了···

三、 添加忽略文件
有人说在Android Studio中只有在未关联SVN之前添加忽略文件才有效(未曾认证!)。
Android Studio添加忽略文件同样是在Settings->Version Control(跟版本控制有关的设置都在这个目录下)下的Ignored Files里,点击加号进行忽略文件的设置,Android Studio默认给出了三种忽略方式,供开发者进行选择:忽略指定的文件、忽略文件夹下所有文件和忽略符合匹配规则的文件;如图

点击“-”删除;Android Studio创建的Android项目一般需要忽略:
1).idea文件夹
2).gradle文件夹
3)所有的build文件夹
4)所有的.iml文件
5)local.properties文件
四.SubVersion的简单使用
1、导入上传
分上传project和上传module两种
(1)上传project两种方法:
一种:在AndroidStudio 中顶部菜单中 CVS项中有个 Import into Version Control

选择VCS->Import into Version Control->Share Project(Subversion);
这里说明一点,在Import into Version Control下有Import into Subversion和Share Project(Subversion)两个选项
【在studio 有些版本已经没有第二个选项了只有Share Project on GitHup】:第一个是直接将项目导入到SVN服务器上,但是这样做本地的项目同SVN服务器没有建立起关联,在导入后项目所有的文件都会变成红色,而且在要提交到SVN服务器时会提示项目不是SVN下的工作副本;
第二个是将Android Studio当前项目同SVN服务器关联起来,但是并没有将项目导入到SVN服务器上,需要在完成建立连接后再次提交项目到SVN服务器。
处理方法:关于第一种方式,在将本地代码导入到SVN服务器后将本地代码删除,然后从SVN服务器上将之前提交的代码更新下来,这样一来也可以同SVN建立关联正常进行开发;第一种方式和第二种方式的区别就在于:第一种是将代码先提交到SVN服务器上,然后再从SVN服务器上更新下来(本地项目同SVN服务器建立联系);第二种是先同SVN服务器监理联系,然后将代码提交到SVN服务器上去。建议使用第二种方式进行新项目的SVN关联。
两种方式都可以实现将本地代码提交到SVN服务器的功能,但是步骤有所不同,先来完成第二种方式的项目同SVN的关联及代码提交,第一种貌似不正规
下图既是第二种方式将本地项目同SVN进行关联的:

之后会弹出选择要分享的SVN地址及其他选项,如下图:

在Define share target下选择第二个,可根据情况在原有位置设定文件夹;选择完成后点击Share就可以了,会弹出让你选择SVN工作副本的格式化版本(jdk版本),如下图:

建议选择1.8format,我之前选择了其他的试了一下,发现项目总会报出一下错误,原因暂时未发现,就先这样选择吧;点击OK等待一会就能创建本地项目同SVN服务器的关联了;成功后会自动刷新本地的项目,可能需要等一会项目里的内容变成绿色,即表示已经成功了。到目前为止只是将项目同SVN服务器建立了联系,并没有将代码提交到SVN服务器上去。
第二种:在项目所在文件夹,单击鼠标右键,选择“TortoiseSVN”->“Import“->确定即可。可以添加更新log内容···

(2)上传module(或项目)
在Settings->Version Control选项,在右边窗口中,点击加号设置关联SVN的项目或module,如图

点击减号删除关联,在右侧···按钮选择module路径,VCS:中选择版本控制名称。
设置完后,我们右击module/项目,会发现菜单里面多了一个“Subversion”菜单,点击她的子菜单中的“Share Directory”菜单

然后会弹出选择要分享的SVN地址及其他选项,同上面设置。
提交module/项目
右击module/项目-->Subversion--->Commit Directory,这时候会弹出Commit Change对话框,这里显示的是你项目改变的文件,我们点击提交

或者点击SVN相关操作按钮里的commit就行了


Commit Changes 这里有几个选项需要了解的:
Auto-update after commit :自动升级后提交
keep files locked :把文件锁上,我想这应该就只能你修改其他开发人不能修改不了的功能
在你提交之前:before commit
Reformat code:重新格式化代码
Rearrange code:重新整理代码
Optimize imports:优化导入
Perform code analysis:执行代码分析[ 默认选择]
Check TODO(show all):检测需要修改的代码[显示所有默认选择]
clean up: 清除所有
Update copyright:更新版权
具体看情况选择功能点:比如不想其他人修改这些代码可以选择keep files locked
在commit 按钮下面还有一个是create patch这个选项试一下其作用:

是创建一个补丁文件主要的作用就是可以查看修改的地方:

点击Commit后Android Studio会先对当前代码进代码分析,如果有错误或者警告会弹出如下的框,如果有错误冲突等需要解决后再提交,如果是警告可以忽略(同Eclipse相同);第一次将整个代码提交到SVN服务器时时间有可能很长,请耐心等待,之后再创建项目时就不会这么慢了。

这时候默默等待提交完成,最后我们的项目颜色就变成了黑色,被忽略的文件是灰色,然后我们打开SVN,会看到我们的项目已经存在里面了呢
2、检出版本库里面的项目
第一种:
选择一个空白的地方或者新建一个空文件夹,单击鼠标右键,选择”SVN Checkout“,然后点击确认即可。

第二种:
在在AndroidStudio 中顶部菜单中 CVS项中有个checkout from version control-Subversion,点击弹出checkout from Subversion对话框


点+号添加repos的url路径,checkout按钮可以根据选择的那个路径下载,弹出选accept:

弹出权限认证输入的对话框,然后ok.选择目标路径。
注:帐号、密码由服务器端给你分配权限


弹出让你选择SVN工作副本的格式化版本(jdk版本)建议选1.8,也有人说选1.6编译更快,如下图:

到此,就拉到你设定的目录中了。
Q:SVN 出现Cannot checkout from svn: Server SSL certificate rejected无法导出文件 或 错误码svn: E170001,svn: E175002
A:该问题是由于svn的账户名和密码没有权限造成,既然已经配置权限出现这个问题,是因为配置svn证书缓存引起的。
解决方法一:AndroidStudio 中setting->Version Control->Subversion->General选项卡中点击下面的Clear Auth Cache按钮即可清除证书缓存,此后再次关联项目时只需输入svn用户名密码即可。

方法二:在项目所在目录,右键【TortoiseSvn】—–》【setings】—-》【saved Data】——-》点击Authentication的【Clean all】按钮


Q:module/项目提交SVN服务器后,出现很多问题需要删除,重新上传。我们会发现当我们第一次share到subversion/Directory的时候,下次就无法重新share了,也无法断开连接,就算我们将工程目录下的.svn目录删除它还是会无法重新share到SVN。
A:可以分两步解决:
第一步:修改VCS值
工程目录下定位到.idea目录,打开找到vcs.xml文件,用记事本打开文件:

将VCS=“svn”改为VCS=“”即可 。此时,android studio工具栏中得VCS工具即可重新share了
第二步:删除项目中的 .svn 文件
虽然使项目断开了SVN连接,但是项目中的 .svn文件并未清理掉,可能会造成再次上传到SVN失败
可以通过查找直接删除.svn目录,这里我们提供一个更方便的方法:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN] 
@="Delete SVN Folders"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\command] 
@="cmd.exe /c \"TITLE Removing SVN Folders in %1 && COLOR 9A && FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" \""
保存之后,提示





在底部SVN Respositories选项中选中上传的需要删除的项目,右键delete···,删除SVV上传的项目

到此才算完全解除了关联。然后可以重新上传了·····
第一天写博客,发现写点东西真的不是很容易。
参考http://www.cnblogs.com/songmeng/p/4389446.html
后期补充Android Studio SVN代码冲突的解决,可参考http://blog.csdn.net/gf771115/article/details/53174250
浅谈Windows下SVN在Android Studio中的配置、基本使用及解除关联的更多相关文章
- SVN在Android Studio中的配置
		
在AndroidStudio中开发版本控制,除了Git就是SVN,和Eclipse不同Android Studio没有提供单独的插件,只能和SVN客户端关联使用,和Eclipse安装有很大区别,下面介 ...
 - Mac系统下,在android studio中使用Github版本管理
		
1.下载并安装github客户端http://git-scm.com/download/ 2.打开android studio,测试github是否使用ok 点击"test",如果 ...
 - Android studio 中的配置编译错误总结
		
1.编译Andorid 工程的时候,有时候出现gradle 报下面的错误. Error:(1, 0) Cause: com/android/build/gradle/LibraryPlugin : U ...
 - Android SQLite ORM框架greenDAO在Android Studio中的配置与使用
		
博客: 安卓之家 微博: 追风917 CSDN: 蒋朋的家 简书: 追风917 博客园: 追风917 # 说明 greenDAO是安卓中处理SQLite数据库的一个开源的库,详情见其官网:我是官网 详 ...
 - 浅谈Kotlin(一):简介及Android Studio中配置
		
浅谈Kotlin(一):简介及Android Studio中配置 浅谈Kotlin(二):基本类型.基本语法.代码风格 浅谈Kotlin(三):类 浅谈Kotlin(四):控制流 前言: 今日新闻:谷 ...
 - 浅谈Windows环境下DOS及MS-DOS以及常见一些命令的介绍
		
浅谈Windows环境下DOS及MS-DOS以及常见一些命令的介绍 前记 自己是搞编程的,首先我是一个菜鸟,接触计算机这么久了,感觉很多计算机方面的技术和知识朦朦胧胧.模模糊糊,貌似有些贻笑大方了:所 ...
 - [原创]浅谈NT下Ring3无驱进入Ring0的方法
		
原文链接:浅谈NT下Ring3无驱进入Ring0的方法 (测试环境:Windows 2000 SP4,Windows XP SP2.Windows 2003 未测试) 在NT下无驱进入Ring0是一个 ...
 - Ubuntu 14.04 下 android studio 安装 和 配置【转】
		
本文转载自:http://blog.csdn.net/xueshanfeihu0/article/details/52979717 Ubuntu 14.04 下 android studio 安装 和 ...
 - 浅谈 IE下innerHTML导致的问题
		
原文:浅谈 IE下innerHTML导致的问题 先来看个demo吧: <!DOCTYPE html> <html> <head> <meta charset= ...
 
随机推荐
- JQuery事件与动画总结
			
1.加载DOM 1.1.window事件 window.onload=function(){}.... 时机:其他资源都加载完毕后,再执行 $(function(){}) ……:只是等待标签完毕,即可 ...
 - Python HTMLTestRunner生成网页自动化测试报告时中文编码报错UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6
			
1. 由于使用Python Selenium做网页自动化测试时,有截取网页上的中文信息保存到测试结果中,最终出现编码错误如下: File "D:/PycharmProjects/AutoTe ...
 - DirectFB环境搭建
			
一.下载安装包 http://www.directfb.org/index.php?path=Main%2FDownloads git clone git://git.directfb.org/git ...
 - bootstrap快速入门笔记(五)-文本元素类,各种标签,排版
			
1,h1到h6这里也有定义了 2,全局元素被直接赋予font-size 设置为 14px,line-height 设置为 1.428,<p> (段落)元素还被设置了等于 1/2 行高(即 ...
 - jdbc ,jdbcTemplate,MyBatis,Hibernate比较与分析
			
JDBC 1:jdbc(Java Data Base Connection 数据库连接)是一种用于执行sql语句的API,其中使用jdbc连接时需要的,Connection,Statement,Res ...
 - OSS.Core基于Dapper封装(表达式解析+Emit)仓储层的构思及实现
			
最近趁着不忙,在构思一个搭建一个开源的完整项目,至于原因以及整个项目框架后边文章我再说明.既然要起一个完整的项目,那么数据仓储访问就必不可少,这篇文章我主要介绍这个新项目(OSS.Core)中我对仓储 ...
 - c# post basic 接口
			
string url = "http://xxxxxxxxx";//地址,请反复检查地址的准确性 string usernamePassword = "username: ...
 - Hbase的架构原理、核心概念
			
Hbase的架构原理.核心概念 1.Hbase的表.行.列.列族 2.核心组件: Table和region Table在行的方向上分割为多个HRegion, 一个region由[startkey,en ...
 - JDK的并发容器
			
除了提供诸如同步控制,线程池等基本工具外,为了提高开发人员的效率,JDK已经为我们准备了一大批好用的并发容器,这些容器都是线程安全的,可以大大减少开发工作量.你可以在里面找到链表.Hash ...
 - 2.从AbstractQueuedSynchronizer(AQS)说起(1)——独占模式的锁获取与释放
			
首先我们从java.util.concurrent.locks包中的AbstraceQueuedSynchronizer说起,在下文中称为AQS. AQS是一个用于构建锁和同步器的框架.例如在并发包中 ...