SVN简介
Subversion是一种开放源代码的全新版本控制系统,支持可在本地访问或通过网络访问的数据库和文件系统存储库.
Subversion不但提供了常见的比较、修补、标记、提交、回复和分支功能性,Subversion还增加了追踪移动和删除的能力.
它支持非ASCII文本和二进制数据,这使SVN不仅对传统编程任务非常有用,同时也适于web开发,图书创作和其它在传统方式下未采纳版本控制功能的领域.
SVN的版本库
$1__VE_ITEM__u SVN的核心就是版本库.
$1__VE_ITEM__u 版本库存放所有的数据,它按照文件树形式存储数据(包括文件和目录).
$1__VE_ITEM__u 任意数量的客户端都可以连接到版本库,读写这些文件. 通过写,别人可以看到这些信息,通过读数据,可以看到别人的修改.
$1__VE_ITEM__u 版本库是一种特殊的文件服务器,它会记录每一次的更改.
$1__VE_ITEM__u 当一个客户端从版本库读取数据时,通常只会看到最新的版本, 但是客户端也可以去看以前的任何一个版本.
文件共享问题:
$1__VE_ITEM__Ø 所有的版本控制系统都需要解决这样一个基础问题: 怎样让系统允许用户共享信息,而不会让他们因意外而互相干扰.
$1__VE_ITEM__Ø 文件共享的二种解决方案:
$1__VE_ITEM__— (1) 锁定 – 修改 – 解锁
(2) 拷贝 – 修改 – 合并
第1种模型通常被认为不利于协作,但有时候锁定会更好,而第2种模型则可以根据上下文进行合并,即版本库的文件主要以行为为基础的文本文件(如源程序)
版本库URL:
SVN常用操作术语:
$1__VE_ITEM__Ø 提交(commit). 发布你的修改给别人,你可以使用提交(commit 或者checking in)修改到版本库.
$1__VE_ITEM__Ø 更新(update). 当二人或多人同时取出了一份工作拷贝,如果其中一人更改了拷贝,并提交到了版本库,
$1__VE_ITEM__— 这时其它人的拷贝并不会发生改变,这时这些人就可以使用更新让自己的版本与版本库中的版本一致!
$1__VE_ITEM__Ø 修订版本(revision): 每当版本库接受了一个提交,文件系统进入了一个新的状态,叫做一次修订(revision).
SVN在四种工作状态下的操作:
工作文件状态 | 提交(commit) | 更新(update) |
未修改且是当前的 | 不做任何事情 | 不做任何事情 |
本地已修改且是当前的 | 成功提交 | 不做任何事情 |
未修改且不是当前的 | 不做任何事情 | 取到最新的版本到工作拷贝 |
本地已修改且不是最新的 | 会失败,这个文件必须首先要更新 | 合并公共和本地修改,如果不可以自动完成,会让用户解决冲突 |
SVN下载下来直接解压,可以得到一个文件夹,这其中最重要的就是bin文件夹.
为SVN设置环境变量
$1__VE_ITEM__Ø PATH :在path原路径中加上svn的bin目录的路径.
$1__VE_ITEM__Ø SVN_EDITOR :设置svn的外部日志编辑工具。Windows下一般直接设置成notpad即可.
利用svnadmin创建版本库
1. 首先创建版本库的上级目录. Mkdir e:\svn
2. 利用svnadmin创建版本库. Svnadmin create e:\svn\prj01
利用svnserve启动版本库
Svnserve -d -r e:\svn\prj01
向版本库中导入项目:
1. 修改版本库目录下conf目录下的svnserver.conf, 将 password-db = passwd前的# 去掉.
2. 修改版本库目录下conf目录下的passwd文件,在其中添加svn版本库的用户名和密码. 然后重启svn服务器.
3. 在DOS下进入需要导入的项目的根目录下,然后用svn import 命令导入项目到版本库中.
svn import --username=zyt --password=123 svn://localhost
注:在一次登录后,SVN会将我们的登录信息保存起来存放在硬盘的文件中,其存放位置为:c:\Documents and Settings\[你的登录系统用户名]\Application Data\Subversion, 如果想要删除该信息,只需要将该目录中的auth文件夹删除即可.
检出项目:
新建一个目录用于存放检出的项目,然后在DOS状态下进入该目录,并运行下面的命令:
svn checkout –username=zyt --password=123 svn://localhost
提交项目修改:
$1__VE_ITEM__Ø 当我们对一个项目中的文件进行了修改后,我们就可以用commit将修改的结果提交到版本库上.
$1__VE_ITEM__Ø 注意:我们可以在检出项目的根位置使用此命令,它会递归检查下面更新的文件并将其提交的版本库中. 如果是新增的文件,我们必须先用svn add命令将其加入到版库中,然后再用commit对其进行提交.
SVN获得项目最新版本:
$1__VE_ITEM__Ø 我们可以在项目的根目录上使用update命令来获得该项目在版本库中的最新版本.
SVN图形化操作工具—TortoiseSVN:
1. 创建版本库,修改相应的配置文件.
2. 启动版本服务器.
3. 导入、检出项目.
4. 对项目进行update和commit等操作.
在MyEclipse中使用SVN插件:
安装subclipse, SVN 插件
1、从官网下载site-1.8.1.zip文件,网址是:subclipse.tigris.org,
2、从中解压出features与plugins文件夹,将其放到我们的新建的一个目录中
3、在/opt/MyEclipse/MyEclipse8.5/dropins下新建文件svn.link,内容是:path=/opt/MyEclipse/myPlugin/svn 保存。
4、删除/opt/MyEclipse/MyEclipse8.5/configuration/org.eclipse.update文件夹(也可不执行此步)
5、重启myeclipse就一切正常了。
6、在MyEclipse中用svn执行其它操作
$1__VE_ITEM__—