Apache Subversion是一个功能强大的版本控制系统(version control system)。设计初衷是希望成为更好的CVS。
Apache Subversion有很多“代名词“,简写SVN。这些代名词实质上就是不同的第三方提供的build。如 Windows下的build有
CollabNet (supported and certified by CollabNet; requires registration) SlikSVN (32- and 64-bit client MSI; maintained by Bert Huijben, SharpSvn project) TortoiseSVN (optionally installs 32- and 64-bit command line tools and svnserve; supported and maintained by the TortoiseSVN project) VisualSVN (32- and 64-bit client and server; supported and maintained by VisualSVN) WANdisco (32- and 64-bit client and server; supported and certified by WANdisco) Win32Svn (32-bit client, server and bindings, MSI and ZIPs; maintained by David Darj)
Apache Subversion 是一个CS结构,Apache并没有提供图形界面的客户端,而只维护了一个基于命令行的客户端,如果需要图形界面的客户段则可以下载由第三方提供的客户端工具。
Apache Subversion 官方下载页面
本文选用了TortoiseSVN(GPL license)。TortoiseSVN1.9.2-64-bit
一般版本控制系统有几个基本概念:Repository, working copy,versioning models。
Respository:版本控制系统的核心,存放系统数据,通常这些数据以文件系统树形式存放。其实就是一个文件服务器。
working copy:字面上就是一个对VCS管理的文件数据的某个特定版本进行本地复制。
Versioning models:一个版本控制系统的主要目的就是跟踪不同版本,以及另一个重要目的就是团队协作共享和编辑文件。为完成这个目的,不同的版本控制系统采用的策略是不一样的。在解决“文件共享存在的问题”时使用的策略不一样。
Subversion主要采用的就是策略二,clearcase也是采用这种策略,策略二更适合更多人的团队合作。
Subversion的working copy里有一个特定的管理员子目录(.svn目录)。这里面的文件帮助subversion认识版本化的文件变更信息。任何工作目录里的文件有两样重要信息被记录:
通过这两个信息就可以将文件状态按分为四种。(本地文件是否修改,本地文件是否过时)
了解上述基本概念后就是简单的实践:
实践步骤: 1. 创建一个repository 2. 向repository中添加或导入数据(使用svn import 或者 svn add命令) 3. 创建一个working copy 4. 更新文件
一、Tortoise快速入门 (官方文档)
Windows安装TortoiseSVN非常方便快速。安装完后右键菜单上就会出现相应的项。
第一步创建一个Repository.
先创建一个空文件夹(如F:\versions),进入文件夹,点击右键选择TortoiseSVN->Create repository here.
则会生成一个Respository。文件结构如下图:
conf/ This directory is a container for configuration files. db/ This directory contains the data store for all of your versioned data. format This file describes the repositorys internal organizational scheme. (As it turns out, the db/ subdirectory sometimes also contains a format file which describes only the contents of that subdirectory and which is not to be confused with this file.) hooks/ This directory contains hook script templates and hook scripts, if any have been installed. locks/ Subversion uses this directory to house repository lock files, used for managing concurrent access to the repository. README.txt This is a brief text file containing merely a notice to readers that the directory they are looking in is a Subversion repository.
第二步、然后将已有的project导入respository。
1. 选中已有的project文件夹 2. 点击右键打开上下文菜单-->tortoiseSVN->Import... 3. 输入url: 如本地F:///reopository/trunk 4.添加备注“导入并初始化project” 5.点击OK
第三步、创建working copy
新建一个空文件夹->进入上下文菜单->SVN check out...-->选择project url
working copy生成的文件夹图标将会有一个绿色的勾。
第四步,users正常工作
在这个working copy的目录中,上下文菜单会多出很多功能供使用。
这里就可以修改文件,添加新文件,更新文件,回滚,合并等等