如何使用SVN进行版本控制

如何使用SVN进行版本控制,第1张

Android studio如何使用SVN进行版本控制?

如题,有哪位大神在实际工作中使用了Android studio和SVN的,能说明一下具体的 *** 作吗?下图是我测试SVN时初始化导入到SVN后,本地项目就变成一片红了,然后点击更新也没用;修改了内容后提交时,提示我没有任何修改,无法提交,真真的是郁闷啊!

添加评论 分享

默认排序

按时间排序

25 个回答

161

赞同

反对 知乎用户 Android Studio关联SVN相关 *** 作

161 人赞同 通过这两天对Android Studio的研究,终于搞通了Android Studio的基本 *** 作及与SVN的相关关联 *** 作(这样才能在公司的开发工作中使用);Google年底将会停止ADT插件的更新和支持,全面转向Android Studio(果然是自己的孩子啊),因此使用Android Studio进行安… 显示全部

通过这两天对Android Studio的研究,终于搞通了Android Studio的基本 *** 作及与SVN的相关关联 *** 作(这样才能在公司的开发工作中使用);Google年底将会停止ADT插件的更新和支持,全面转向Android Studio(果然是自己的孩子啊),因此使用Android Studio进行安卓项目的开发也是大势所趋,项目得闲之时研究一下Android Studio的使用;Android Studio的基本编辑 *** 作现在网上已经很多了,需要的可以找着看看,下面是这几天摸索出来的Android Studio关联SVN的相关 *** 作,时间较短,如果有疏漏或错误的地方还望指正。

一、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相关配置信息的路径,保留默认路径就行,目前没有发现需要修改什么东西;以上 *** 作如下图:

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

在Android Studio中新创建一个Android项目,成功后我们先来添加要忽略的文件;在Android Studio中添加忽略文件同Eclipse有所不同,在Eclipse上我们什么时候添加忽略文件都可以,但是在Android Studio中只有在未关联SVN之前添加忽略文件才有效(试了好多次才将忽略文件忽略成功啊!)。Android Studio添加忽略文件同样是在Settings->Version Control(跟版本控制有关的设置都在这个目录下)下的Ignored Files里,点击加号进行忽略文件的设置,Android Studio默认给出了三种忽略方式,供开发者进行选择:忽略指定的文件、忽略文件夹下所有文件和忽略符合匹配规则的文件;如图所示:

点击右侧的“+”进行添加,“-”删除;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)两个选项:第一个是直接将项目导入到SVN服务器上,但是这样做本地的项目同SVN服务器没有建立起关联,在导入后项目所有的文件都会变成红色,而且在要提交到SVN服务器时会提示项目不是SVN下的工作副本;第二个是将Android Studio当前项目同SVN服务器关联起来,但是并没有将项目导入到SVN服务器上,需要在完成建立连接后再次提交项目到SVN服务器。两种方式都可以实现将本地代码提交到SVN服务器的功能,但是步骤有所不同,先来完成第二种方式的项目同SVN的关联及代码提交,第一种貌似不正规,之后再说;下图既是第二种方式将本地项目同SVN进行关联的:

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

在Define share target下选择第二个可以再trunk下创建你当前项目的文件夹,相应的第一个选项是直接将整个文件都放到trunk文件夹下,第三个在项目文件夹下有创建了一个trunk文件夹,因此建议使用第二中方式;选择完成后点击Share就可以了,会d出让你选择SVN工作副本的格式化版本(jdk版本),如下图:

建议选择1.8format,我之前选择了其他的试了一下,发现项目总会报出一下错误,原因暂时未发现,就先这样选择吧;点击OK等待一会就能创建本地项目同SVN服务器的关联了;成功后悔自动刷新本地的项目,待项目里的内容变成绿色的即表示已经成功了,如下图所示:

到目前为止只是将项目同SVN服务器建立了联系,并没有将代码提交到SVN服务器上去;如何提交呢,其实很简单,只需点击SVN相关 *** 作按钮里的commit就行了(上图SVN相关 *** 作按钮左起第二个按钮);

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

成功后我们就完成了新建项目同SVN的关联及导入项目到SVN服务器上了。

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

三、Android Studio SVN代码冲突的解决

关于代码冲突解决的问题,首先要感谢一下知友ShinChven的回答建议。在使用SVN更新服务器上的代码时,有时会d出代码冲突的对话框,问你是否进行合并,并提供了三种合并方案:accept yours(使用你的)、accept theirs(使用别人的)和merge(合并);

前两个都是进行的覆盖 *** 作,就不多做解释了;当你选择merge合并时,会d出代码合并对照窗口,一共有三个屏,左右两侧时你和服务器不同的代码并高亮显示不同的部分,带有箭头和叉号,通过点击箭头将两边冲突的代码添加到中间的合并区域中去,点击叉号则辨识放弃那一段代码,待所有冲突处理完成后merge就成功了。

SVN设置版本库删除子目录权限的方法如下:

1,如果SVN服务器的用户ID和权限管理是基于 *** 作系统用户的,那么可以通过设置不同 *** 作系统用户对各文件夹的权限来限制;

2,如果SVN服务器的用户ID和权限管理是基于Apache的,那么只能考虑从钩子程序下手了,研究一下pre-commit这个钩子吧,这个钩子是在正式提交 *** 作之前服务器端自动执行的,你可以编写这个钩子,在commit时检查是否删除文件夹,如果是则返回错误信息。

一、准备工作

1、SVN服务器:解压缩包,可以从官方网站下载最新版本。

2、SVN客户端:TortoiseSVN,即常说的小乌龟,是一个客户端程序,用来与服务器端通讯。

二、安装服务器和客户端程序

1、SVN服务器:直接解压缩到某个文件夹下即可。示例路径:c:\svn\

备注:如果下载的是msi程序,直接运行按提示安装即可。

2、SVN客户端:直接运行按提示安装即可。示例路径:C:\Program

Files\Subversion

三、建立版本库(Repository):示例路径:e:\svnroot。建立版本库有两种方法:

方法一,建立空目录e:\svnroot\repos1,进入repos1文件夹,在空白处点击右键,选择“TortoiseSVN->Create

Repositoryhere...”,

方法二,建立空目录e:\svnroot\repos2,进入DOS命令行,输入如下命令:

svnadmincreate

e:\svnroot\repos2

四、运行SVN服务器,启动服务。启动服务有两种方法:

方法一,临时启动服务,在DOS下输入如下命令:

svnserve

-d

-r

e:\svnroot\repos1

--listen-host

ip地址

--listen-port=端口号

说明:“listen-host”和“listen-port”可选。默认端口是3690,如果端口已经被占用,可以通过选项listen-port指定端口号。

注意:请不要关闭命令行窗口,关闭窗口会把

svn服务就停止了。

方法二,启动SVN服务为后台运行程序:

sc

create

svnserve

binPath=

"c:\svn\bin\svnserve.exe

--service

-r

e:\svnroot\repos1"

displayname=

"Subversion"

depend=Tcpip

start=

auto

说明一:

(1)sc是windows自带的服务配置程序。svnserve是服务的名称,可根据需求取名。

(2)参数binPath表示svnserve可执行文件的安装路径。

(3)--service表示以windows服务的形式运行,--r指明svnrepository的位置,service参数与r参数都作为binPath的一部分,因此与svnserve.exe的路径一起被包含在一对双引号当中。

(4)displayname表示在windows服务列表中显示的名字,depend=Tcpip表示svnserve服务的运行需要tcpip服务,start=auto表示开机后自动运行。安装服务后,svnserve要等下次开机时才会自动运行。

说明二:

(1)binPath的等号前面无空格,等号后面有空格。displayname、depend、start也一样,service前面是--,不是-

,而r前面是-。

(2)若要卸载svn服务,则执行

sc

delete

svnserve

即可。

(3)从“sc”到“auto”是在同一个命令sc,必须写在同一行。

(4)启动服务命令:netstart

svnserve,停止服务命令:net

start

svnserve,也可以进入Windows提供的界面 *** 作SVNService服务了,即控制面板—>服务。

(5)如果路径中包括空格,一定要用“\”处理“"”号,例如上面的例子中如果svnserve.exe在“c:\programfiles\svn\”中,则命令应该写为“binpath="\"c:\programfiles\svn\bin\svnserve.exe\"

五、配置用户和权限

(1)修改svnserve.conf,在e:\svn\repos1\conf目录下,用文本编辑器打开svnserve.conf:

将:

#

anon-access

=

read

#

auth-access

=

write

#

password-db

=

passwd

改为

anon-access

=

read

auth-access

=

write

password-db

=

passwd

注意说明:

anon-access等列前面是没有空格的。

anon-access

=

read表示没通过用户名密码登录的访问只有读的权限,如果改为none则没有用户名密码不能访问

auth-access

=

write表示通过用户名密码登录的有写的权限(当然读的权限也就有了)

password-db

=

passwd表示可以通过

用户名

=

密码

的方式在passwd文件中添加用户

(2)修改同目录的passwd文件,增加用户帐号:

将:

[users]

#

harry

=

harryssecret

#

sally

=

sallyssecret

添加帐号:

[users]

#

harry

=

harryssecret

#

sally

=

sallyssecret

admin

=

admin

添加一个admin账户,密码是admin。

6

六、初始化SVN,导入数据

选中要上传SVN的文件夹,“右键

->TortoiseSVN

->

Import...”

,在d出对话框的“URL

of

repository”输入“svn://localhost/project1/”。在“Importmessage”输入注释,点击OK,要求输入帐号,输入账户admin和密码admin。

7

七,测试SVN

本地测试:新建一空文件夹test1,单击右键,选择“SVN

Checkout”,在“URL

of

repository”中输入“svn://localhost/project1”。

其他机器测试:如果运行svnserve的主机IP地址是1.2.3.4,则URL输入的内容就是“svn://1.2.3.4/project1”。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/11083552.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存