文章为博主原创,如需转载,请注明出处。
如有疑问以及文章不妥之处,请联系博主:fly_fish_jxm@163.com
一、准备工作
1.实验原料及环境:windows7 ,Eclipse , Subversion-1.6.5 , TortoiseSVN-1.6.6 , subeclipse-1.6.5
2. 实验目的:在本地搭建SVN环境,管理Eclipse-adt_bundle工具下的Android开发项目
二、环境搭建
SVN的环境搭建主要分为3个部分的:服务器端搭建、客户端搭建、Eclipse相应插件的装载。
2.1 服务器端环境搭建
1. 点击服务器端安装包:Setup-Subversion-1.6.5。除了安装位置选择自定义之外,其他步骤选择next直至finish完成安装;
图2-1:svn服务器端安装界面
2. 打开cmd,输入svn查看svn服务器端是否装好。若显示“使用‘svn help’得到用法”则表示svn服务器端已安装好了。
图2-2:cmd检测svn安装结果
3. 建立服务器的库在e:\SVN\svn_lib
图2-3:建立库
图2-4:svn库内文件
4. 用户设置。进入库svn_lib —> conf目录打开svnserve.conf和passwd文件。对svnserve.conf文件将“password-db=passwd”一行前边的#去掉进入创建用户,然后在passwd文件中添加新用户和密码。
图2-5:启用用户和密码
图2-6:建立用户名和密码
5. 启动服务器。在cmd中使用svnserve –d –r e:\SVN\svn_lib 。-d表示服务器在后台运行,-r表示以root用户运行(这种方式仅供实验使用,因为关闭cmd后服务端的svn就会关闭)。
图2-7:运行服务器端的svn
2.2 客户端的安装
1.安装TortoiseSVN-1.6.6.17493-win32-svn-1.6.6软件。安装时除了安装位置之外其他都选择next直至finish。
图2-8:客户端的svn安装界面
2.3 插件的安装
1. 进入http://subclipse.tigris.org/servlets/ProjectProcess?pageID=p4wYuA去下载相应subeclipse插件(可能需要翻墙)。我选择的是1.6.X的版本更新url:http://subclipse.tigris.org/update_1.6.x
图2-9:subeclipse插件网址
2. 打开Eclipse—Help—Install NewSoftware—把更新地址填入Add地址栏中—点击Add—给插件起名字、确定—选定需要下载的插件—确定。
图2-10:eclipse上自动获取subeclipse插件
3. 确认插件是否安装完成。Window—show view—other,如果显示有svn选项,则说明你的SVN已经安装好了。
图2-11:插件确认
三、SVN的使用
前边我们已经建立了存在于“服务器”中的库,下边我来说明一下如何从使用者而不是管理者的角度使用SVN。
3.1 上传初始版本到资源库,此时版本为1
1. 打开eclipse —Window—show view—other—SVN—SVN资源库视图;
2. 在资源库视图中右键选择“新建—新建资源库位置”;
3. 在弹出的窗口中填写URL,然后点finish。因为我是将库建在本地,所以我的URL为:svn://localhost
图3-1:添加svn资源库
3. 新建一个Android项目HealthySleep作为实验项目的初始版本使用。然后在项目上右键team—share project,然后在弹出的窗口分别选SVN—使用已有资源库位置—使用项目名称作为文件夹名—编辑提交注释(这个很重要一定要写明了,最好做项目的时候项目组讨论使用一套特定格式的注释方法)—点击finish。
图3-2:首次提交项目界面1
图3-3:首次提交项目界面2
图3-4:首次提交项目界面3
图3-5:首次提交项目界面4
4. 输入用户名和密码(就是安装服务器端的时候建立的那个),点击OK。则会在库里建一个项目,但是要把代码提交上去还要对项目右键team—提交。此时版本变为2。
图3-6:提交项目是需要输入的用户名和密码
图3-7:库里已经为你的项目建立了文件目录
图3-8:在eclipse查看svn资源库,并再次提交
图3-9:再次提交之后版本变为2
3.2 另一个用户将项目下载下来
1. 同上边先连接到库里;
2. 然后在SVN资源视图里对需要下载的项目右键—检出为…。若是已经有之前的版本下载在本地的workspace里,则可以对项目右键—team—更新。
四、对脏数据问题的解决方法
描述:两个Coder同时从库里下载了一个版本为3的project,然后还都对里边同一个类做了修改。随后两个Coder都想把自己的修改后版本传送到库中,此时SVN如何处理。
解决:按照时间的先后,CoderA先上传了自己的project,然后库和A的版本都变为4。然后Coder B想要上传自己的版本,则会被提示该项目版本已经过时(已经有新版本在库里了)。此时Coder B怎么办,直接放弃自己的代码吗?其实Coder B可以对自己本地的项目进行更新,此时则会将本地版本更新为最新版本,但是也不会删除自己之前code的代码,而是提示哪些代码是更新过的哪些是自己对版本3做更改过的。但是,笔者建议程序员在下载项目之前最好先沟通过,做好合理的分工,不然某天辛辛苦苦熬夜找出的bug然后一看已经被其他码农解决更新上去了简直是欲哭无泪呀~