一、Android Studio配置SVN

Android Studio关联配置SVN很简单,在Settings里面,找到Version Control->Subversion;在这个页面的控制面板中的General中将Use command line client打勾勾选上,然后浏览本地的SVN安装目录,选到"svn.exe"即可;

在Use command line client下面还有一个Use system default Subversion configuration directory,这个默认是勾选上上的,这个是svn相关配置信息的路径,保留默认路径就行,目前没有发现需要修改什么东西;以上操作如下图:
[img]http://dl2.iteye.com/upload/attachment/0114/1438/e74b2633-77e6-3078-896e-fcedd94b97da.png[/img]

二、Android Studio项目关联SVN资源库及添加忽略文件

在Android Studio中新创建一个Android项目,成功后我们先来添加要忽略的文件;在Android Studio中添加忽略文件同Eclipse有所不同,在Eclipse上我们什么时候添加忽略文件都可以,但是在Android Studio中只有在未关联SVN之前添加忽略文件才有效(试了好多次才将忽略文件忽略成功啊!)。Android Studio添加忽略文件同样是在Settings->Version Control(跟版本控制有关的设置都在这个目录下)下的Ignored Files里,点击加号进行忽略文件的设置,Android Studio默认给出了三种忽略方式,供开发者进行选择:忽略指定的文件、忽略文件夹下所有文件和忽略符合匹配规则的文件;如图所示:
[img]http://dl2.iteye.com/upload/attachment/0114/1440/6ca71120-87f8-3db1-9fe8-4e2da0c2b886.png[/img]
点击右侧的“+”进行添加,“-”删除;Android Studio创建的Android项目一般需要忽略.idea文件夹、.gradle文件夹、所有的build文件夹、所有的.iml文件及local.properties文件。

忽略完文件后,我们进行项目同SVN的关联,选择VCS->Import into Version Control->Share Project(Subversion);这里说明一点,在Import into Version Control下有Import into Subversion和Share Project(Subversion)两个选项【在studio 1.3已经没有第二个选项了只有Share Project on GitHup】:第一个是直接将项目导入到SVN服务器上,但是这样做本地的项目同SVN服务器没有建立起关联,在导入后项目所有的文件都会变成红色,而且在要提交到SVN服务器时会提示项目不是SVN下的工作副本;第二个是将Android Studio当前项目同SVN服务器关联起来,但是并没有将项目导入到SVN服务器上,需要在完成建立连接后再次提交项目到SVN服务器。两种方式都可以实现将本地代码提交到SVN服务器的功能,但是步骤有所不同,先来完成第二种方式的项目同SVN的关联及代码提交,第一种貌似不正规,之后再说;下图既是第二种方式将本地项目同SVN进行关联的:
[img]http://dl2.iteye.com/upload/attachment/0114/1442/ef095bfd-3581-3405-b9a1-34af54576858.png[/img]
之后会弹出选择要分享的SVN地址及其他选项,如下图:
[img]http://dl2.iteye.com/upload/attachment/0114/1444/91594847-f973-3b6d-a19b-3249e5c19afa.png[/img]
在Define share target下选择第二个可以再trunk下创建你当前项目的文件夹,相应的第一个选项是直接将整个文件都放到trunk文件夹下,第三个在项目文件夹下有创建了一个trunk文件夹,因此建议使用第二中方式;选择完成后点击Share就可以了,会弹出让你选择SVN工作副本的格式化版本(jdk版本),如下图:
[img]http://dl2.iteye.com/upload/attachment/0114/1446/772c175f-6611-3400-bb8e-28ef204a8700.png[/img]
建议选择1.8format,我之前选择了其他的试了一下,发现项目总会报出一下错误,原因暂时未发现,就先这样选择吧;点击OK等待一会就能创建本地项目同SVN服务器的关联了;成功后悔自动刷新本地的项目,待项目里的内容变成绿色的即表示已经成功了,如下图所示:
[img]http://dl2.iteye.com/upload/attachment/0114/1448/2ca9ef5d-fa67-30da-ba6e-421265ec7c5b.png[/img]
到目前为止只是将项目同SVN服务器建立了联系,并没有将代码提交到SVN服务器上去;如何提交呢,其实很简单,只需点击SVN相关操作按钮里的commit就行了(上图SVN相关操作按钮左起第二个按钮);
[img]http://dl2.iteye.com/upload/attachment/0114/1450/ab17789a-40f2-3482-bfdf-cd288a28606f.png[/img]
点击Commit后Android Studio会先对当前代码进代码分析,如果有错误或者警告会弹出如下的框,如果有错误冲突等需要解决后再提交,如果是警告可以忽略(同Eclipse相同);第一次将整个代码提交到SVN服务器时时间有可能很长,请耐心等待,之后再创建项目时就不会这么慢了。
[img]http://dl2.iteye.com/upload/attachment/0114/1452/51f4cb8a-bd71-3d5f-97ac-314f3b96837b.png[/img]
成功后我们就完成了新建项目同SVN的关联及导入项目到SVN服务器上了。

关于第一种方式,在将本地代码导入到SVN服务器后将本地代码删除,然后从SVN服务器上将之前提交的代码更新下来,这样一来也可以同SVN建立关联正常进行开发;第一种方式和第二种方式的区别就在于:第一种是将代码先提交到SVN服务器上,然后再从SVN服务器上更新下来(本地项目同SVN服务器建立联系);第二种是先同SVN服务器监理联系,然后将代码提交到SVN服务器上去。建议使用第二种方式进行新项目的SVN关联。

在我的studio1.3版本里面没有share project(subvision的)只能选择直接导入项目到服务器:

\

添加服务器仓库:导入项目到服务器一路next就可以啦!导入成功后本地项目就好和服务器关联起来:

稍微修改下布局看看是否关联测试下:
[img]http://dl2.iteye.com/upload/attachment/0114/1454/cd6deca5-fb71-385b-9ebf-b539c0cb2bf1.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0114/1456/b54ff1c6-c0fe-353b-b7b7-c0300f20ea4b.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0114/1458/7908e3b2-4aa5-3ce1-9d60-7b5164afe961.png[/img]
到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:更新版权

[img]http://dl2.iteye.com/upload/attachment/0114/1460/eae27f78-23e9-3c07-89e8-5afd6705c25a.jpg[/img]

具体看情况选择功能点:比如不想其他人修改这些代码可以选择keep files locked

在Commit Message 添加修改信息
[img]http://dl2.iteye.com/upload/attachment/0114/1462/4ae43aa7-7d34-3dcf-9575-a7e1b402ea72.png[/img]
修改成功:
[img]http://dl2.iteye.com/upload/attachment/0114/1464/8d7200f0-9f4a-307f-a9a9-816213f429e9.png[/img]
在commit 按钮下面还有一个是create patch这个选项试一下其作用:
[img]http://dl2.iteye.com/upload/attachment/0114/1469/c2aeb4ea-729a-3333-a2d8-865dd3cb4a9f.png[/img]
应该明白是创建一个补丁文件主要的作用就是可以查看修改的地方:
[img]http://dl2.iteye.com/upload/attachment/0114/1471/2b74fb48-66f0-35d6-b0cc-f8bcd48fd6bf.png[/img]
三、Android Studio SVN代码冲突的解决

关于代码冲突解决的问题,首先要感谢一下知友ShinChven的回答建议。在使用SVN更新服务器上的代码时,有时会弹出代码冲突的对话框,问你是否进行合并,并提供了三种合并方案:accept yours(使用你的)、accept theirs(使用别人的)和merge(合并);
[img]http://dl2.iteye.com/upload/attachment/0114/1473/db599552-27cf-3cae-860c-67cd6ed1a0ad.png[/img]
前两个都是进行的覆盖操作,就不多做解释了;当你选择merge合并时,会弹出代码合并对照窗口,一共有三个屏,左右两侧时你和服务器不同的代码并高亮显示不同的部分,带有箭头和叉号,通过点击箭头将两边冲突的代码添加到中间的合并区域中去,点击叉号则辨识放弃那一段代码,待所有冲突处理完成后merge就成功了。
[img]http://dl2.iteye.com/upload/attachment/0114/1475/9ba82280-228e-35a7-a6a9-a86d2105d397.png[/img]
当然在使用过程中肯定会遇到很多的问题上面的东西也是参考其他大神的,自己也添加了几点区别:到时候遇到问题再继续研究下。

继续完善:
Checkout SVN上的项目
选择subversion
[img]http://dl2.iteye.com/upload/attachment/0114/1481/0bbbe482-41c7-308b-ad72-fcecd6401f22.png[/img]
导入项目到SVN服务器,
Import into 选择subversion
[img]http://dl2.iteye.com/upload/attachment/0114/1483/19b859a0-6e1d-332c-9d5e-23084840edc0.png[/img]
点击[img]http://dl2.iteye.com/upload/attachment/0114/1487/77466af4-d72e-3059-a7ce-7acd6a794f7d.png[/img]添加服务地址例如
[img]http://dl2.iteye.com/upload/attachment/0114/1489/807a3feb-7a08-3241-9f20-9b42a55dab5b.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0114/1491/ecb1545e-09c6-3ed8-aaf4-31c1538e0da6.png[/img]
浏览SVN服务器上的项目文件夹
[img]http://dl2.iteye.com/upload/attachment/0114/1494/fa6fcbc7-368e-39f0-a10d-7788e70a0eae.png[/img]
SVN仓库会显示文件列表
[img]http://dl2.iteye.com/upload/attachment/0114/1497/9674cf25-853e-35c3-8c74-8eb3bdac7f2e.png[/img]
其他说明
[img]http://dl2.iteye.com/upload/attachment/0114/1499/abd745ab-29c0-382d-88ab-7b955a1b6812.png[/img]
单文件 签入当文件,右键subversion Add

文件红色:表示文件没有添加到服务器

绿色:表示没有更新新的修改到服务器

普通黑色:表示和服务器同步

文件夹颜色说明
[img]http://dl2.iteye.com/upload/attachment/0114/1501/bdfcb4c5-5e31-3fce-b5b6-d50f7b6420dd.jpg[/img]
黄色感叹号(有冲突): --这是有冲突了,冲突就是说你对某个文件进行了修改,别人也对这个文件进行了修改,别人抢在你提交之前先提交了,这时你再提交就会被提示发生冲突,而不 允许你提交,防止你的提交覆盖了别人的修改。要解决冲突,如果你确认你的修改是无效的,则用TSVN还原你的修改就行了;如果认为你的修改是正确的,别人 的提交是无效的,那么用TSVN先标记为“解决冲突”,然后就可以提交了;如果你认为你的修改和别人的修改都有一部分是有效的,那么你就把别人的修改手动 合并到你的修改中,然后使用TSVN标注为“解决冲突”,然后就可以提交了。进入文件夹,寻找有黄色感叹号的文件,这些文件就是发生冲突的地方,根据实际 情况处理冲突 米字号(有本地修改代码): --这是说明你有未提交的本地代码。 问好(新加入的资源): --这说明该文件是项目中新增文件资源,新增资源可以是文件、图片、代码等。

红色感叹号(本地代码与库没有保持一致): --这说明本地代码跟库上没有保持一致,如果用户想修复,可以将带红色感叹号图标文件删除,直接update即可。 灰色向右箭头(本地修改过) --本地代码没有及时上库。 蓝色向左箭头(SVN上修改过) --记得更新代码后修改,提交前跟svn对比习惯。 灰色向右且中间有个加号的箭头(本地比SVN上多出的文件) --修改完记得跟svn保持一致 蓝色向左且中间有个加号的箭头(SVN上比本地多出的文件) --删除该文件后,再次更新,将svn上文件全部更新下来。 灰色向右且中间有个减号的箭头(本地删除了,而SVN上未删除的文件) --也就是说你删除确认后,一定要记得上库,跟svn保持一致 蓝色向左且中间有个减号的箭头(SVN上删除了,而本地未删除的文件) --比对svn库上代码,确定需要删除后,更新svn(删除无用代码)。 红色双向箭头(SVN上修改过,本地也修改过的文件 ) --这个表示本地和svn上都修改过,最好就是把本地修改合并到svn,修改代码前最后先更新。

文件状态说明:
[img]http://dl2.iteye.com/upload/attachment/0114/1503/462bd9d1-63d4-3747-b672-019ec998b421.png[/img]
单个文件签入签出操作:右键subversion

Add,添加到服务器

Commit:提交

Update:更新,获取新版本

Integrate:合并

注意:SVN和VSS不同签入前如果文件被其他人修改需要比较版本如何其他修改有效需要合并签入
[img]http://dl2.iteye.com/upload/attachment/0114/1505/7b43de34-3460-30bb-9c4d-382cf64d5fb0.png[/img]
整个项目更新提交:Commit ,Update
[img]http://dl2.iteye.com/upload/attachment/0114/1507/104e4504-a29f-3e9b-972f-79c788f44f41.png[/img]
不知道是啥原因如果刚刚开始选择share project(subvision)的话,好像在选择commit的时候很慢,始终上传不了绿色的部分代码:

所以我直接在本地:commit到服务器里面的
[img]http://dl2.iteye.com/upload/attachment/0114/1509/e2f66ca1-f795-39a9-836b-5a6b2564b15c.png[/img]

欢迎加Q Q群:104286694