SVN是Subversion的简称
是一个开放源代码的版本控制系统,它管理文件和目录可以超越时间。一组文件存放在中心版本库,这个版本库很像一个普通的文件服务器,只是它可以记录每一次文件和目录的修改,这便使你可以取得数据以前的版本,从而可以检查所作的更改。从这个方面看,许多人把版本控制系统当作一种“时间机器”。
安装
- subversion是开源的版本控制系统
- TortoiseSVN 是一个客户端程序,用来与subserver服务器端通讯
建立版本库(Repository)
运行Subversion服务器需要首先要建立一个版本库(Repository)。版本库可以看作是服务器上集中存放和管理数据的地方。
这里我们建立版本库使用TortoiseSVN客户端方式。首先任意建立在一个空目录如 E:/svn/repos,注意一定要是空文件夹的。然后在repos 文件夹上“右键->TortoiseSVN->Create Repository here...”,按提示就可以创建一系列所需文件夹和文件。
TortoiseSVN 客户端操作
SVN Checkout…
该命令的操作步骤依次如下所示:
Ø本地创建一个文件夹,在文件夹上点击右键,出现下图所示的菜单项:
Ø点击“SVN Checkout…”,出现下图所示对话框:
Ø 在“URL of repository:”中填写服务器上的版本文件地址
Ø 在“Checkout directory:”中填写本地文件路径,用于保存从服务器上的版本文件副本(以下简称“副本”),其它选项为默认值
Ø 点击“OK”按钮,出现授权登陆框:向SVN管理员获取账号和密码,输入账号和密码,勾选“Save authentication”(勾选该项后,下次就不用输入账号和密码了),点击“OK”。
Ø 授权通过后,将出现下载服务器版本文件过程的对话框:
Ø 完成数据下载,出现如下界面:
Ø 点击“OK”后,此时在本地文件夹中就会保留服务器文件副本。
到此,通过“SVN Checkout…”,已成功获得所需版本文件副本。
SVN Commit…
注意:在进行该命令之前,必须依次进行其它两个命令操作“SVN Update”和“Diff”(详见命令操作规范)。
副本修改后,文件图标由“绿勾”变成“红叹号”。同时,该副本需上传服务器,保证数据同步,以便其他成员能看到您所修改的数据。
操作步骤依次如下所示:
Ø 找到副本修改处,或所有修改副本的同一个上级目录
Ø 点击鼠标右键,出现如图所示菜单:
Ø 点击“SVN Commit…”,出现如图所示对话框:
该对话框展示内容如下:
(1) Commit to:表示服务器版本地址,副本会上传到该地址所在的地方,不可编辑;
(2) Message:用来描述副本修改的原因;
(3) Changes made:表示当前文件夹下所修改的副本文件。
Ø 点击“OK”,上传服务器,同步版本;
Ø 上传成功后,显示如下对话框:
Ø 点击“OK”,上传修改副本成功。
SVN Update
注意:每当执行“SVN Commit…”时,必须先执行“SVN Update”。
执行该命令,用于同步服务器最新版本,便于在最新版本上开展工作。
操作步骤如下所示:
Ø 找到“Checkout”的根目录,点击右键,出现如下所示菜单:
Ø 点击“SVN Update”,将出现以下对话框:
表示将从服务器下载最新的副本,对话框中所显示的内容表明有两个文件更新。
Ø 点击“OK”,关闭对话框。
到此,通过“SVN Update”,成功获得最新副本。
若服务器没有文件更新,则对话框中不会显示“Updated”项,仅显示“Completed”项。
Diff
注意:每当执行“SVN Commit…”时,最好先执行一下“Diff”。
目的:再次集中审查副本修改的内容,确保修改无错。
Ø 定位到文件图标为“红叹号”的文件,点击“右键”->“TortoiseSVN”->“Diff”,如下图所示:
Ø 在点击“Diff”之后,出现如下所示对话框:
其中:对话框中左侧部分为服务器上的文件内容,右侧部分为修改后的文件内容。
从左右对比来看,副本的修改内容为“黄色”条状部分。
Edit conflicts
当副本修改处和服务器版本相同处被修改并下载到本地时,就会发生文件冲突。
操作步骤如下所示:
Ø 执行“SVN Update”
Ø 若发生冲突,会出现如下对话框:
冲突部分的描述由“红色”字体表示,表示“stdafx.h”文件发生冲突
Ø 在“Conflicted”项指定的文件路径的同级目录下,
会出现三个标有“问号”的文件和一个标有“黄色叹号”的文件,
它们分别为:stdaf.h,stdaf.h.mine,stdaf.h.r7505,stdaf.h.r7507。
Ø 在“stdafx.h”上点击“右键”->“TortoiseSVN”->“Edit conflicts”
Ø 点击“Edit conflicts”,出现以下对话框:
其中:左边为服务器上修改后的内容部分,右边为副本修改后的内容部分。
Ø 两边的红色部分,根据实际需要进行保存或舍弃。
点击右边“红色”条,如图所示:
由于:左右两边的数据都需要保留,
因此执行“Use text block from ’theirs’ before ‘mine’”
或“Use text block from ’mine’ before ‘theirs’”。
Ø 点击“Use text block from ’theirs’ before ‘mine’”后,出现如下对话框:
此时就没有“红色”条块了,原先的两个“红色”条块所对应的内容就会合并到下面的对话框中。
Ø 点击“菜单”中画红圈的按钮(Mark as resolved),确认冲突编辑完成:
此时:stdaf.h.mine,stdaf.h.r7505,stdaf.h.r7507三个文件就会自动删除,
stdaf.h文件上的图标由“黄色叹号”变成“红色叹号”。
到此,通过“Edit conflicts”,成功完成冲突编辑操作。
不同而显示不同的图标。
绿色图标表示这是一个最新取出的工作副本,他的Subversion状态是normal。
当你开始编辑一个文件,这个文件的状态就会变成modified,图标也会变成红色圆圈带一个感叹号。这样你就可以轻易的知道自从上次更新以来都有修改过哪些文件,需要提交哪些文件。
这个黄色三角符号带感叹号,表示在一次update中产生了一个冲突(conflict)。
蓝色加号意味着这个文件或文件夹已经被计划加入到版本控制之下。
红叉叉表示相应文件或文件夹被计划删除(deleted),或者表示文件缺失。