Android-版本控制 SVN

Posted 来世当猪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android-版本控制 SVN相关的知识,希望对你有一定的参考价值。

一 、 虚拟机的安装

常见的虚拟机产品有 VMware 公司的 VMware Workstation、Oracle 公司的 VirtualBox。因为 VMware 体积相
对庞大(当然功能也强大),而我们只需要虚拟机的基本功能,因此在本文档中本人主要介绍 VirtualBox 虚拟机。

VirtualBox 的下载地址:http://pan.baidu.com/s/1gdd7FLx
深度精简版 XP 镜像下载地址:http://pan.baidu.com/s/1hqCb8Rq

下载好的软件截图如下:


就和安装普通软件一样安装 VirtualBox。安装好以后启动该软件,主界面如下图所示。

新建一个虚拟电脑。点击左上角 按钮。弹出如下对话框,在对话框中输入名称,并选择操作系统类
型为 Microsoft Windows,版本选择 Windows XP (32 bit)。

点击下一步,进入如下图界面。在这里我们使用推荐的默认内存大小即可。

点击下一步,进入如下图界面。对于第一次创建我们可以直接选择“现在创建虚拟硬盘”选项。

点击创建,进入如下图界面。这里使用默认的(VDI)虚拟硬盘文件类型即可。

点击下一步,进入如下图界面。在选择物理硬盘存储方式上,我们使用默认的(动态分配)即可。

点击下一步,进入如下图界面。在该向导页中我建议使用期默认的配置,期将默认的虚拟硬盘放在 C 盘下面,如
果 C 盘空间不是很足,我们可以指定一个目录用于存储虚拟硬盘。

点击创建,那么我们的虚拟机配置就暂时可以了,但是因为我们还没有在该虚拟机 myXP 中安装 XP 系统光驱,
因此还无法使用。下一步就是安装系统文件。

给创建的虚拟机安装 XP 操作系统。

在如上图所示界面选中 myXP 条目,然后点击启动,进入如下图界面。

在上图界面中选择设备->分配光驱->选择一个虚拟光盘。在打开的文件浏览目录选择我们提前下载好的

镜像文件即可。这时如果系统没有自动启动,那么我们就选择控制->重启即可。

在安装过程中会出现如下界面,我们将鼠标焦点被虚拟机获取以后,选择 Enter 键,即选择默认选项即可。

以上步骤大概需要花费 30 几分钟,然后就看到令人怀旧的 XP 系统了。

2. 为什么使用版本控制

版本控制就是通过对软件开发进程中的文档及源码的版本(每一次改动)进行控制(记录、追踪、比较、合并
等)。

为什么使用版本控制:
及时了解团队中其他成员的进度。
轻松比较不同版本间的细微差别;
记录每个文件成长的每步细节,利于成果的复用(reuse);
资料共享,避免以往靠拷贝文件造成的版本混乱;
人人为我,我为人人。所有成员维护的实际是同一个版本库,无需专人维护所有文件的最新版本;
协同工作,大大提高团队工作效率,无论团队成员分布在天涯还是海角;

版本控制常用的软件有哪些?

CVS(很少使用) (Concurrent Version System)是免费开源的配置管理工具,其源代码和安装文件都可
以免费下载。由于其简单易用、功能强大,跨平台,支持并发版本控制,而且免费,它在全球中小型软件企业中得到了广泛使用。不过 CVS 的部署比 VSS 要复杂一些。

SVN(用的很多) (Subversion)作为 CVS 的重写版和改进版,其目标就是作为一个更好的版本控制软件,取代 CVS.总的来说,CVS 在发展的过程中逐渐失去优势,已经不再适合现代开发,目前,绝大多数 CVS 服务已经改用 SVN。

ClearCase (很少用很贵很大)具体的说是做配置管理的工具, 只是 SCM 管理工具其中的一种。 是 RATIONAL公司开发的配置管理工具,类似于 VSS,CVS 的作用,但是功能比 VSS,CVS 强大的多,而且可以与 WINDOWS 资源管理器集成使用,并且还可以与很多开发工具集成在一起使用。但是对配置管理员的要求比较高。而且 RATIONAL的产品一般都很贵。如果自己找到 CRACK 的话就没有技术支持了。

VSS(微软的软件,多集成在微软的开发工具中,java 程序员基本不用) (Visual Source Safe)为微软的
产品,较为易学易用,使用微软的产品进行开发通常都用这个,但是 VSS 只能在 windows 平台上运行,并且不是免费软件,安全性也不高,因此应用并不太广泛。

GIT(很小很强大用的很多)是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

3. SVN 实战

介绍了版本控制,现在就开始实战了

3.1 SVN 简介
SVN 是近年来崛起的版本管理工具,在当前的开源项目里几乎 95%以上的项目都用到了 SVN。SVN 项目的初衷是为了替换当年开源社区最为流行的版本控制软件 CVS,在 CVS 的功能基础上有很多的提升,同时也能较好的解决CVS 系统的一些不足。

3.2 SVN 服务器的安装

VisualSVN Server 是一款免费的 SVN 服务器软件。有多个版本可供下载,本人在此以 2.5.5 版本为例进行演示,该版本跟 3.0.0 稍微有差别,但是基本功能基本一样。

下载地址:
VisualSVN-Server-2.5.5.msi:http://pan.baidu.com/s/1dDtkRmx
VisualSVN-Server-3.0.0-win32.msi:http://pan.baidu.com/s/1gd8FPqN
VisualSVN-Server-3.0.0-x64.msi 下:http://pan.baidu.com/s/1pJv8qi3

我们可以将 VisualSVN-Server 安装在本机上也可以安装字虚拟机上。为了更形象的模拟真实的开发流程,我将 VisualSVN-Server 安装在我们事前安装好的虚拟机上。

注意:为了方便直接将本地的文件拷贝到虚拟机上,我们还需要干两件事情
1)在本地安装 VMTTransferFiles setup_host.exe
2)在虚拟中安装 GuestSetup.iso 镜像

VMTransferFiles.zip 下载地址:http://pan.baidu.com/s/1sjFMZuP

下载好以后,解压。

然后先安装 setup_host.exe,安装前一定得先将虚拟机关闭。然后启动虚拟机,安装增强功能,然后根据提示重启虚
拟器并安装 GuestSetup.iso(安装方式跟安装 XP 光驱是一样的)。

把拖放功能打开。然后分配光驱,选择 GuestSetup.iso 镜像。上面的所有步骤都执行后,电脑需要重新启动。然后就可以实现文件的拖放功能了。

文件拖到虚拟机中,如下图所示。然后双击开始安装。安装比较简单,中间会有几次向导提示,我们使用期默认的选项即可。一路点击下一步,直到安装完成。

安装好以后,软件会自动打开 VisualSVN-Server 主界面,如下图所示。

安装好以后如何验证是否已经成功?打开一个浏览器,在地址栏输入:https://127.0.0.1,如果出现如下界面则说明安装成功了。

在本地电脑端链接虚拟机中的 SVN 服务。
首先通过将虚拟机的网卡模式设置成桥接网卡,如下图。然后在虚拟机的命令行中,输入 ipconfig 查看当前虚拟机的ip 地址。获得这个 ip 地址后在本地电脑上的浏览器地址栏输入 https://ip即可访问。第一次访问的页面效果跟上图一样。这样我们的 SVN 服务就已经安装完毕。

创建子仓库。在虚拟机中打开 VisualSVN-Server,右击 Repositories,然后在弹出的快捷菜单选择 Create New Repository。如下图所示,输入 Repository Name:mobileSafe(一般都是以自己的项目名称来命名)。然后点击 OK。

添加用户,并赋予权限。
在第一步完成后会看到如下图所示界面。

右击 mobileSafe->Properties,弹出如下窗口。

点击 Add 按钮添加一个用户,在弹出的 Create New user 对话框中输入姓名和密码,然后点击 OK。

给新创建的用户非配权限,权限共分为 No Access、Read Only、Read/Write 三种。我在这里给 zhangsan 分配了 Read/Write 权限。然后点击确定。

用浏览器,访问仓库。
在 VisualSVN-Server 主界面,右击我们创建的 mobileSafe 仓库,然后选择 Copy URL to Clipboard,将 URL地址拷贝到剪切板。

打开浏览器,将该 URL 地址粘贴到地址栏。打开浏览器输入用户名和密码,进入如下界面。

安装好 SVN 服务器之后,我们还需要安装客户端才可以使用。因此下面将介绍 SVN 客户端的安装和使用。

3.4 TortoiseSVN 的安装和使用

TortoiseSVN 是 SVN 版本控制系统的一个免费开源客户端,它是 SVN 版本控制的 Windows 拓展。可以使你避免使用枯燥而且不方便的命令行。它完全嵌入 Windows Explorer,使用时只需在正常的窗口里点击右键操作就可以了。

TortoiseSVN 下载地址:
64 位-TortoiseSVN1.6.7.18415x64svn1.6.9.zip http://pan.baidu.com/s/1o6smAoi
64 位-TortoiseSVN-1.8.8.25755-x64-svn-1.8.10.msi http://pan.baidu.com/s/1mgBn6Qk
32 位-TortoiseSVN-1.7.9.23248-win32-svn-1.7.6.msi http://pan.baidu.com/s/1jGgj2ke
32 位-TortoiseSVN-1.8.8.25755-win32-svn-1.8.10.msi http://pan.baidu.com/s/1o6C5xcY

我们选择一款适合我们系统的软件下载到本地.

3.4.1 TortoiseSVN 的安装

双击安装程序即可启动安装程序,该程序的安装很简单。基本是点击下一步下一步就 OK 了。

在上图界面选择接受协议,然后点击 Next。

上图界面我们使用默认设置即可,继续点击 Next。之后点击安装直到安装完成即可。安装好以后,在任意地方鼠标右击,会看到如下快捷菜单,则说明我们安装成功。如果是低版本的客户端可能需要我们重启电脑才能看到。

3.4.2 单用户版本控制

在电脑桌面(最好某个目录下)创建一个空文件夹,作为 svn 目录,我创建的目录名为 workspace(注意:必须为空目录)。

使该目录跟 SVN 仓库关联起来。

在上一步创建好的空文件夹中右击,选择 SVN Checkout,然后在弹出的 Checkout 对话框输入 URL,则个 URL我们在 VisualSVN 中拷贝就行,不用手动输入。

点击 OK,弹出如下对话框,填上用户名和密码。

看到如下对话框,代表已经关联成功。VisualSVN 中的 mobilesafe 仓库没文件,如果有的话会检出到我们创建的文件夹中,并关联起来。

被关联好以后的文件夹会图标会加上一个绿地白色的对号。但是由于系统刷新时机的问题,我们可能并不
能马上看到这种效果,这时候我们可以重启计算机,然后一般就能看到该图标。该图标里面有一个隐藏文件。我们打开系统的文件夹选项,让隐藏文件及文件夹显示出来。可以看到如下隐藏文件。

打开.svn 文件家,发现如下文件。这些文件都是 svn 进行版本控制时用于存储数据的配置文件。如果将这些文件删除则关联就失效了。

创建一个新文件,并提交到服务器在 workspace 目录下新建一个文本文件,打开文本文件输入一些内容。新创建的文件图标是一个问号,如下图所示。

右击该文件,选择 TortoiseSVN->Add,将该文件添加到服务器。

这里的添加到其实是计划添加到,并未真正添加到服务器,图标如下所示。

然后再次右击该文件,选择 SVN Commit,如下图所示。将该文件真正添加到 SVN 服务器上。

在提交的时候会弹出如下对话框,在该对话框中我们可以输入关于该文件的描述信息。然后再点击 OK。

提交好以后,文件的图标是一个对号,代表跟服务器同步完成。

修改上面新创建的文件,然后重新提交。
打开上面的文件,然后修改内容后。发现图标变为如下图所示。该图标代表文件已经修改。

修改后的文件,我们再次提交,则图标就会变成正常的绿色对号状态。
在提交更新的时候弹出如下对话框。

双击上图红色框中内容,弹出如下图的对比视图。通过该视图我们可以查看本次提交的内容跟服务器中最新的版本之间的不同之处,同时也可以再次编辑我们的文件,然后再提交。

查看 SVN 服务器中所有的版本文件。

从该 log 对话框中可以看到该文件的各个版本以及提交日志,如下图所示。

将当前文件恢复(回滚)到第二个版本。
通过上面的 Log 看到我们的文件共有三个版本。右击第二个版本,在弹出的对话框中选择 Revert to this revision,然后在点击确定即可。如果只是想把第二个版本保存,那么选择 Save revision to 条目即可。

3.4.3 版本库的备份和还原

版本库的备份很简单,只需要将主仓库中我们创建的仓库文件夹拷贝到一个相对安全的目录下(拷贝到另外
一个电脑上,甚至是异地备份,比如北京的数据备份到上海,这样就算地震来了也不用担心数据丢失)。

版本库的还原其实就是在 VisualSVN-Server 中将备份出来的仓库导进去。 就好比将我们从 Eclipse 中导出来工程项目导入到另外一个 Eclipse 中。

如下图所示,右击 Repository->所有任务->Import Existing Repository。

在弹出的对话框中输入备份库地址和新仓库名称即可,如下图所示。

3.4.4 冲突的解决

当多个人同时对一个文件进行修改的时候,比如 A 先提交了,B 后提交,那么 B 就可能会遇到冲突问题。冲突时的异常信息如下图所示。下面异常信息显示当前版本已经过期,这是因为 A 和 B 同时下载该文件时假设该文件的版本号是 1,然后 A 和 B 就同时修改该文件,A 修改后提交了,那么每提交一次,版本号就加 1,这时候服务器中文件的版本号已经变成 2 了。当我们的 B 改好去提交的时候,这时 B 客户端的版本号还是 1,而服务器版本号是 2 已经低于服务器版本号,因此报了如下 out of date 异常。

根据提示让我们 try updating。那么接下来我们右击该文件,选择 SVN Update。

当 Update 的时候,出现了如下异常,就是版本冲突。版本冲突的图标是黄色感叹号。

这时候我们需要右击冲突文件,然后选择 TortoiseSVN->Edit conflicts。

点击以后弹出如下编辑冲突对话框。

上面左侧是别人的文档,右侧是自己的文件,下面是合并后的文件。

我们右击上面的文本行内容,在弹出的快捷键中选择我们队该冲突行内容的处理意见。

处理后的文本显示在最下面。

合并好以后我们点击保存按钮。

点击保存按钮后我们右击我们的文件,然后选择 TortoiseSVN->Resolved。

之后该文件图标就变成红色的感叹号,我们需要重新提交一下即可。这样我们就彻底解决了文件冲突问题。

冲突解决后服务器中的版本号已经变成 3 了,这时候对于另外一个使用该文件的用户就需要 update 一下,才能将自己本地的文件更新为最新版本。

在实际开发过程中,尽量的避免冲突,因此每天当我们在编辑一个文件前,最好先执行一下 update,将自己的本地版本更新成服务器中最新的版本。

3.4.5 SVN 文件锁和常见图标

当某些文件只能被自己修改时,我们可以给该文件添加一个锁。

右击文件,选择 TortoiseSVN->Properties

弹出如下对话框。在右下角选择 New ->Needs-Lock

然后我们找到该文件进行 Commit 操作,发现图标变为灰色的对号。

加锁的文件是只读模式的无法进行修改。如果需要修改,右击文件选择 SVN Get lock。

在下面弹出的对话框中输入给该文件加锁的理由。然后点击 OK。

点击 OK 后,发现图标变成了一个锁上的锁。

该文本被某一个账户锁住后,只能该用户修改该文件。修改后,默认情况下锁就自动释放掉。

被加锁的文件只能由加锁者解开,右击选择 TortoiseSVN->Release lock。如果是超级管理则也可以将该锁进行 Break the lock 操作。

SVN 常见的图标

一个新检出的工作复本使用如下绿色的对勾重载。表示 Subversion 状态正常。

在你开始编辑一个文件后,状态就变成了已修改,而图标重载变成了红色感叹号。通过这种方式,你可以很容易地看出哪些文件从你上次更新工作复本后被修改过,需要被提交。

如果在提交的过程中出现了冲突,图标变成黄色感叹号。

如果你给一个文件设置了 svn:needs-lock 属性,Subversion 会让此文件只读,直到你获得文件锁。只读文件具有这个重载图标来表示你必须在编辑之前先得到一个锁。

如果你拥有了一个文件的锁,并且 Subversion 状态是正常,这个重载图标就提醒你如果不使用该文件的话应该释放锁,允许别人提交对该文件的修改。

这个图标表示当前文件夹下的某些文件或文件夹已经被计划从版本控制中删除,或是该文件夹下某个受控的文件丢失了。

加号告诉你有一个文件或是目录已经被计划加入版本控制。

3.4.6 SVN 提交的原则

1、文件提交时要求必须提交注释,注明相关修改信息,例如 bug 号、任务描述等。具体内容可采用约定或者设置的形式。

2、你所提交的改变将体现给其他开发者,要明白提交的后果,提交之前要慎重。代码变动及时提交,避免丢失本地修改后无法恢复。

3、在提交之前要编译代码并修正错误。要保证新增加的文件同时被提交,否则只在你本地能正常工作,导致其它人不能编译通过。

4、提交之前要测试所改变的应用,测试改变后的效果是否达到预期的目的。

5、多次检查提交的内容。提交之前应先做 SVN 更新或与资源库同步,注意到 SVN 关于冲突、错误的信息。资源库同步会告诉你将要提交的内容与资源库内容之间的差别,确认它们是不是你真正想要提交的。

6、尊重其他开发者的代码,在重大变更之前与他们协商。SVN 并不能替代开发者之间的交流。

7、提前宣布修改计划。当你计划进行修改,需要影响到 SVN 里的许多文件时,先通过邮件或者当面通知其他开发者。例如,修改底层数据库模块时,有可能影响到业务逻辑层调用数据库模块的地方。这样其他开发者会有准备,也会对修改提出意见和建议。

8、使用自动提交。SVN 一次可以提交多个文件,所以,请一次提交所有相关的文件,即使它们不在目录下。这样可以确保代码在提交前后都是正确的。

9、不要将格式修正和代码修正混合提交。修正代码格式包括增加缩进、减少空格等,如果把它们同代码修正一起提交,很难从日志或资源库同步信息里发现代码的修正。所以应该把修正问题与修正格式分开提交。
每次提交尽量是一个最小粒度的修改。比如一个 debug 提交一次,一个小功能提交一次。

10、每日进行开发工作之前更新代码。避免与昨天其他开发者的代码冲突。

11、所有的代码文件编码格式应该是 UTF-8 的。包括的类型如 java, jsp, xml, php, html 等。

12、提交的文件必须是开发者共用的程序文件,私人测试程序、程序缓存、图片缓存文件不要提交到 SVN 里。作为一个特例,eclipse 的工程配置文件.project 可以提交到 SVN。一些常见的文件和目录可以加到 SVN 属性的忽略列表里,包括 Thumbs.db、/build/、*.class、/classes/、/data/等等。

以上是关于Android-版本控制 SVN的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio版本控制之SVN图文教程篇

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

黑马Android(12)版本控制SVN&GIT

Android-版本控制 SVN

Android-版本控制 SVN

SVN版本库修改URL路径或者IP地址