浅谈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 版本

安装过程需要特别注意的是安装SVN时必须安装command line 功能,只有安装带有 command line 功能的 SVN 客户端,AndroidStudio才能使用。安装SVN时需要用户自定义选择 command line ,默认是不会自动安装的,如下图:

 

需要选择安装 command line  功能

 

 

如果采用默认安装,安装完成,启动命令行,输入: svn

则会提示:'svn'不是内部或外部命令,也不是可运行的程序或批处理文件。

 

安装好之后在系统环境变量中找到“path”,然后检查变量值里是否加上了";默认目录\TortoiseSVN\bin"(引号里面的是要增加的内容,当然你的路径不一定肯定跟这里的一样,记得那个英文分号,那是跟其他值隔开的,一定要有)。有的会自动配环境变量,没有就手动加上。

注:默认安装在C:\Program Files\下

 

直到启动cmd,输入: svn

提示:type 'svn help' for usage。配置完成。

注:如果在Terminal中执行 svn 命令,提示:'svn'不是内部或外部命令,也不是可运行的程序或批处理文件。虽然安装了 command line 功能,也配好了环境变量,只要重启电脑就不会报错了。

二、AndroidStudio中关联SVN

 SVN安装完成后,checkout、commit代码都需要关联svn后才可以,首先打开 AndroidStudio  中的 settingS 配置面板,找到Version Control-->SubVersion如下图:

 

  General选项卡下配置SVN的路径,Use Command Line Client 输入框最右侧有个浏览的按钮,选择浏览到你本地安装 TortoiseSVN 的 svn.exe 文件路径,如下图:

注:svn.exe 文件图标不是小乌龟奥,不要看错了···

三、 添加忽略文件

commit代码时,需要添加忽略文件,checkout代码可以暂时跳过此步骤。

在Android Studio中只有在未与SVN建立通道之前(路径未变成绿色)添加忽略文件才有效,否则changlist中设置的忽略文件也会被勾选,即使手动去除勾选,设置的忽略文件仍是绿色。正常设置的忽略文件应该是暗黄色。

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

点击“-”删除之前添加过的;Android Studio创建的Android项目一般需要忽略:

1).idea文件夹

2).gradle文件夹

3)所有的build文件夹(挨个查找)

4)所有的.iml文件(挨个查找)  使用第三个ignore all files matching(匹配)不好使

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,此处是不是看到上传project的第三种方法呢,如图

点击减号删除关联,在右侧···按钮选择module路径,VCS:中选择版本控制名称。

设置完后,我们右击module/项目,会发现菜单里面多了一个“Subversion”菜单,右键subversion-->Share Directory...或Add to VCS(ps:也可以上传单个类文件)

前者会弹出选择要分享的SVN地址及其他选项,同上面设置。Add to VCS会关联到默认url,如果路径不是指定的路径,可以通过

右键subversion-->Relocate...修改定位到的路径。

 

2.提交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,会看到我们的项目已经存在里面了呢

3、检出版本库里面的项目

第一种:

选择一个空白的地方或者新建一个空文件夹,单击鼠标右键,选择”SVN Checkout“,然后点击确认即可。

如果没配置权限,就提示

第二种:

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

 

 

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

弹出权限认证输入的对话框,然后ok.选择目标路径。

注:帐号、密码由服务器端给你分配权限

 

 

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

到此,就拉到你设定的目录中了。

 4.update文件夹

写代码之前一般我们需先更新svn代码到本地,流程如下

 

 

不需要任何改动,直接ok。

如果存在本地和服务器上文件冲突,三个选项:yours,theirs,merge(合并),根据实际处理。

 

 

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】按钮 

 

清除缓存后,仍出现上面提示,检查respository url是否正确。或是否需要连接vpn。

 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目录,这里我们提供一个更方便的方法:

 

1、在桌面建立一个文本文件,取名为clean-svn-folders.txt,复制添加内容如下:

 

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\" \""

保存之后,提示
直接下一步确定,将扩展名由txt改为reg,是
双击这个reg文件,是(注:双击注入时有些杀毒软件会报木马,忽略即可)。
当出现下面提示,reg文件生效
2、然后在浏览器中找到你需要断开连接的文件夹,右键点击找到“Delete SVN Folders”的选项,点击之后,既可以删除这个文件夹下所有的.svn文件了。

 

 

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

 到此才算完全解除了关联。然后可以重新上传了·····

 Q:当我们引入别的项目的module时,会将其svn路径同时导入,无法上传到另一个SVN服务器。

A:首先按上面方法去除所有.svn文件,module因失去svn通道,字体变成红色。在该module上右键subversion-->Share Directory...或Add to VCS将module上传指定的SVN服务器。方法参考上面的(2)上传module。

 本文为博主原创文章,请尊重版权,未经博主允许不得转载,转载请注明出处:http://www.cnblogs.com/details-666/p/SVN.html

 

第一天写博客,发现写点东西真的不是很容易。

参考http://www.cnblogs.com/songmeng/p/4389446.html

后期补充Android Studio SVN代码冲突的解决,可参考http://blog.csdn.net/gf771115/article/details/53174250

 

转载于:https://www.cnblogs.com/details-666/p/SVN.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/372549.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

四. 基于环视Camera的BEV感知算法-BEVDepth

目录 前言0. 简述1. 算法动机&开创性思路2. 主体结构3. 损失函数4. 性能对比总结下载链接参考 前言 自动驾驶之心推出的《国内首个BVE感知全栈系列学习教程》,链接。记录下个人学习笔记,仅供自己参考 本次课程我们来学习下课程第四章——基于环视Cam…

【腾讯Bugly干货分享】Android Patch 方案与持续交付

本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57a31921ac3a1fb613dd40f3 Android 不仅系统版本众多,机型众多,而且各个市场都各有各的政策和审核速度&#xff0…

App Engine中的Google Services身份验证,第1部分

这篇文章将说明如何构建一个简单的Google App Engine(GAE)Java应用程序,该应用程序可针对Google进行身份验证,并利用Google的OAuth授权访问Google的API服务(例如Google Docs)。 此外,在Google已…

山东自考c语言程序设计停考了吗,2018山东自考停考专业有哪些

自考每年都会停考一批的专业以适应社会的发展,今年山东自考的停考专业有哪些?本文由学梯网小编整理发布,仅供参考。2018年山东自考停考专业有什么根据山东省教育考试院发布的《关于山东自学考试停考国际贸易(专科)等19个专业的通知》知悉&…

公开调用私有Java方法?

我们是Java开发人员,在Java中已知4种访问修饰符:私有,受保护,公共和包。 好吧,除了私有外,最后三个可以通过继承,相同的包或实例从类外部调用。 现在,常见的问题是,可以公…

C语言字符像素,返回字符串宽度 (以像素为单位)

[c]代码库#include #include #include #include int main(void){/* request auto detection */int gdriver DETECT, gmode, errorcode;int x 0, y 0;int i;char msg[80];/* initialize graphics and local variables */initgraph(&gdriver, &gmode, "");/…

Spring动态物业管理

静态和动态属性对于运营管理以及在生产级别更改系统行为都非常重要。 特别地,动态参数减少了服务中断。 本文展示了如何使用Quartz在Spring Applications中管理动态属性。 有关使用 Spring和Quartz集成提供“ 使用Spring和Quartz的多作业计划服务”的文章。 让我们看…

ADF任务流:页面片段的托管bean范围

介绍 当我们使用ADF任务流并需要实现一些特定于流的业务逻辑或存储一些与该流相关的信息时,我们通常使用pageFlowScope托管bean。 而且,当我们需要为流的活动(页面或页面片段)提供服务时,我们将较短的作用域用于此类托…

数据库事物操作

事务 什么是事务?转账:1. 给wc账户减1000元2. 给wcxf账户加1000元 当给wc账户减1000元后,抛出了异常!这会怎么样呢?我相信从此之后,wc再也不敢转账了。 使用事务就可以处理这一问题:把多个对数据库的操作绑…

android+4.4+稳定性,新系统新UI!台电A10h四核安卓4.4.2性能测试

国内著名商标,数码用户首选品牌的台电科技在12月20日全国首发了安卓4.4.2系统,并且运行台电全新tUI同时,支持从安卓4.2系统OTA一键升级至安卓4.4.2系统!作为国内首款升级到目前全球最新的Android4.4.2系统之后,整体性能…

网络知识点小结

VMware虚拟机三种联网方法及原理一、Brigde——桥接:默认使用VMnet0 1、原理: Bridge 桥"就是一个主机,这个机器拥有两块网卡,分别处于两个局域网中,同时在"桥"上,运行着程序,让…

在JUnit中超越核心Hamcrest

在通过JUnit和Hamcrest改进对assertEquals的文章中,我介绍了将Hamcrest与JUnit一起使用 。 然后,我查看了JUnit的内置Hamcrest Core Matcher支持 。 在本文中,我将介绍如何将Hamcrest的非核心匹配器与JUnit一起应用。 这些非核心匹配器默认情…

4pics1word android,4 Pics 1 Word

4 Pics 1 Word是一款非常有意思的看图猜词游戏,这款游戏中会给我们四张图片,玩家需要通过图片给出的信息来猜出是哪个词,看西西的介绍你可能以为这是一款千篇一律的看图猜词游戏,不过这里猜的不是中文而是英语单词。4 Pics 1 Word…

JAVA学习绘图颜色及其笔画属性设置字体显示文字

package com.graphics;import java.awt.*; import java.awt.geom.Rectangle2D; import java.util.Date;import javax.swing.*;/*** * author biexiansheng**/ public class DrawString extends JFrame{private Shape rect;//矩形对象private Font font;//字体对象private Date …

android原生系统开发板,安卓学习必备开发板-Rayeager PX2

由谷歌主导并推动的移动终端操作系统Android,由于其开源开放的特性,自发布之日起便受到全球各大IT厂商的欢迎。在各厂商的热情推动下,基于Android系统的手机、平板、智能手表等各类产品层出不穷,迅速普及到人们的日常生活&#xf…

热点中的即时编译器(JIT)

即时编译器(JIT)的概念以及更广泛的自适应优化是除Java(.Net,Lua,JRuby)之外的许多语言中众所周知的概念。 为了解释什么是JIT编译器,我想先定义一个编译器概念。 根据维基百科,编译…

jq查找字段忽略html标签,jQuery过滤HTML标签并高亮显示关键字的方法

本文实例讲述了jQuery过滤HTML标签并高亮显示关键字的方法。分享给大家供大家参考。具体如下:jQuery实现网页关键字过滤效果,将需要过滤的文字定义在JavaScript中,可定义多个,不过要修改JS代码为数组,这样可过滤出多个…

java.lang.NoClassDefFoundError:如何解决–第1部分

线程“ main”中的异常java.lang.NoClassDefFoundError是开发Java EE企业版或独立Java应用程序时可能会遇到的常见难题之一。 根本原因分析和解决过程的复杂性主要取决于Java EE中间件环境的大小。 特别是考虑到各种Java EE应用程序中存在大量的ClassLoader。 我向您建议的一系…

android 日期国际化,Flutter 日期时间选择类控件及国际化

注意:无特殊说明,Flutter版本及Dart版本如下:Flutter版本: 1.12.13hotfix.5Dart版本: 2.7.0DatePickerFlutter并没有DatePicker这个控件,需要使用showDatePicker方法弹出日期选择控件,基本用法如…

权威发布 鸿蒙涅槃,鸿蒙涅槃 曾圣《鸿蒙》雕塑走进河北美院受追捧

原标题:鸿蒙涅槃 曾圣《鸿蒙》雕塑走进河北美院受追捧2019年10月20日上午10时曾圣《鸿蒙》雕塑作品展——暨河北美院首场新闻媒体发布会在河北美术学院雕塑院举办。河北美术学院校长甄忠义、河北美术学院党委书记高国忠、常务副校长张建敏、党委副书记甄心恒、副校长…