本网站只能被运行在支持JavaScript脚本的环境中

使用Subversion进行版本管理

本节概述

Subversion为一个可以对项目中的各种源代码文件的修改历史进行集中管理的版本管理系统。通过对源代码的修改历史进行集中管理,可以得知“谁”、“何时”、“为何”、“文件中哪些部分”以及“怎样”等与文件变更相关的信息。本节对Subversion版本管理系统进行详细介绍。

什么是版本管理系统

版本管理系统为用于管理各种文件的修改历史的系统。通过对于文件的创建时间、修改时间、文件中代码修改历史的保存及管理,可以确认文件过去某一时刻的内容及对于该文件的所有修改历史,也可以将文件还原到过去某一时刻的状态。

版本管理系统不仅可以保存源代码文件,也可以对保存了会议记录的文本文件,用于展示的PowerPoint文件或Word文件、Excel文件等各种文件进行管理。不仅可用于保存个人用文件,也可以保存小组成员间的共享文件。

什么是Subverison

Apache Subversion为Apache软件基金会开发并发布的开源版本管理系统,使用Apache许可证2.0版进行公开。

Windows操作系统中的几种具有代表性的Subversion管理系统如下所示。

  • CollabNet
  • SillSVN
  • VisualSVN
  • WANdisco
  • Win32Svn

本节介绍如何在Windows操作系统中使用VisualSVN创建Subversion服务器。

版本管理系统中的用语

在版本管理系统中存在各种特定用语,在安装Subversion之前首先对这些用语进行简单介绍。

  • 仓库(Repository)
  • 提交(Commit)
  • 更新 (Update)
  • 修订(Revision)
  • 取消(Revert)
  • 导入(Import)
  • Checkout
  • 合并(Merge)

仓库(Repository)

仓库为版本系统管理中所管理的各种文件的集中保存场所。使用版本管理系统的用户必须将需要保管的各种文件提交到仓库中。需要修改文件时首先从仓库中取出各文件,修改并保存后需要将文件重新提交到仓库中。仓库中保存了各文件的修改历史记录,用户可以查阅文件在过去某一时刻的内容,可以将文件还原到过去某一时刻时的状态。

提交(Commit)

提交为用户将自己对文件所进行的修改内容反映到仓库中的一种操作。通过对仓库的提交,可以只将修改内容传递到仓库中。

更新 (Update)

更新为用户将仓库中已被修改的内容反映到自己本地的编辑环境中的一种操作。为了防止自己本地编辑环境中的文件内容与仓库中的文件内容发生冲突,在修改文件时首先要执行更新操作。

修订(Revision)

修订操作是指在提交的同时更新仓库内文件系统的版本。仓库在被创建时的初始版本号为0,每次被修订号该版本号将被加1。

取消(Revert)

取消操作是指用户取消对文件进行的所有修改,使其返回到从仓库取出时的状态,以防止对文件的误编辑。

导入(Import)

导入操作是指用户将需要通过版本管理系统所管理的文件发送到仓库中的过程。在使用版本管理系统对文件进行管理时,首先需要通过导入操作将文件发送到仓库中。

Checkout

Checkout是指用户从仓库中取出文件后进行修改的操作。

合并(Merge)

合并是指对同一文件应用多种修改内容的操作。在多用户编辑环境中,可能存在多个用户同时编辑同一文件的情况,可以通过合并操作将多个用户对文件的修改统一反映到仓库中,如果存在多个用户对文件同一位置处所进行的不同修改,可以选择使用哪个用户所进行的修改。

安装版本管理软件

接下来,我们下载安装VisualSVN软件。打开http://www.visualsvn.com/server/download/网页, 笔者写作时的最新版本为2.7.3版。

下载安装文件并运行该安装文件开始安装。

阅读使用条款后选取“I accept the terms in the License Agreement”选项,点击“Next”按钮。

选择需要安装的组件,可以选择的组件分为以下两种:

组件 内容
VisualSVN Server and Management Console 安装VisualSVN服务器及管理控制台
Management Console Only 只安装管理控制台,当在局域网中已安装VisualSVN服务器,只在本机安装客户端控制台时使用该选项

此处我们选择“VisualSVN Server and Management Console”选项,然后点击“Next”按钮。

接下来选择VisualSVN服务器的版本,此处我们选择标准版(Standard Edition)。

选择VisualSVN服务器的安装路径,仓库路径及VisualSVN服务器端口号,然后点击“Next”按钮。

通过上述操作方法配置好VisualSVN服务器后,点击“Install”按钮开始安装。

在安装过程中需要等待几分钟。

安装过程结束后选取“Start VisualSVN Server Manager”选项并点击“Finish”按钮结束安装。

VisualSVN服务器将被自动启动,也可以从Windows操作系统的开始菜单中启动VisualSVN服务器。

VisualSVN Server Manager的使用方法

VisualSVN Server Manager为用于对VisualSVN服务器中的用户组及仓库进行管理的工具。在使用VisualSVN对文件进行版本管理操作之前,需要使用该工具对用户组及仓库进行配置。

用户管理

在Subversion中,可以针对用户及用户组来定义对仓库的访问权限。可以针对一个公司内所有开发者共用的仓库来设定各开发者可以查阅或可以存取文件的项目。

在指定开发者允许存取文件的项目后,开发者在向该项目中提交文件时,需要输入用户ID及密码。Subversion将针对用户ID及密码对用户进行确认并且记录用户何时存取什么文件以及对文件作出了什么修改等信息。

在需要新增用户时,点击“操作”菜单中的“Create new user”子菜单,在弹出的“Create new user”对话框中输入该用户的用户名、密码及确认密码后点击“OK”按钮,

仓库管理

为了进行文件的版本管理操作,我们首先需要创建保存文件用仓库。鼠标右击"Repositories"选项,然后点击“Create New Repository...”菜单项,在弹出的“Create New Repository”对话框中输入仓库名,然后点击“下一步”按钮。

可以创建的仓库分为如下表所示的两种。

仓库种类 内容
Empty repository 创建空仓库,推荐使用该选项
Single-project repository 仓库内只放置一个项目时使用。仓库的根目录下将自动配置“trunk”、“branch”、“tag"选项。

此处我们选择”Empty repository“选项,然后点击“下一步”按钮。

接下来选择可以访问仓库的用户,此处我们选择用于指定登录到Subversion中的所有用户均可访问的”All Subversion users have Read / Write access“选项,然后点击”Create“按钮创建仓库。

仓库创建完成后,对话框中显示仓库名,用于访问仓库的URL及仓库访问权限信息,点击Finish按钮结束仓库创建操作。

在浏览器地址栏中输入用于访问仓库的URL,在用户登录对话框中输入Subversion中登录的用户名及密码,浏览器中显示该用户可以访问的仓库信息。

在NetBeans中使用Subversion

接下来介绍如何在NetBeans开发环境中使用Subversion对Web网站或Web应用程序中的各种源代码文件进行版本管理。

将文件导入到Subversion仓库中

在NetBeans中鼠标右击需要使用Subversion进行版本管理的项目,然后点击“版本控制”菜单下的“导入到Subversion资源库”子菜单。

在弹出的用于设定Subversion仓库的对话框中输入如下所示的信息:

项目名 内容
仓库URL 需要导入的仓库URL
用户 对仓库具有访问权限的用户
密码 对仓库具有访问权限的用户所使用的密码

输入上述信息后,点击“下一步”按钮。

在对话框中输入仓库中所使用的项目文件夹名(初始值为NetBeans软件中指定的项目名)及提交消息(必须填写)后点击“下一步”按钮。

在对话框中将显示将被导入到仓库中的所有文件及子目录,如果存在不想被导入到仓库中的文件或子目录,取消该文件或子目录的“提交”选项,然后点击“完成”按钮。

项目被导入到Subversion仓库中后重新在浏览器中访问Subversion仓库,浏览器中将显示被导入的项目信息。

也可以在VisualSVN Server Management中对被导入的项目及项目中的所有文件及目录进行确认。

对操作信息进行确认

在NetBeans软件中使用Subversion版本管理系统管理项目后,任何被新建而未被追加到仓库中的文件或正在被修改的文件名将会被以不同的颜色被标出。

在NetBeans软件中,在选取了某个项目、文件或目录之后点击“团队开发”菜单下的“版本控制信息”子菜单,将在弹出对话框中显示该项目、文件或目录的版本信息及保存场所信息。

在NetBeans软件中鼠标右击某个项目、文件或目录后点击“Subversion”菜单下的“比较”子菜单下的“与BASE进行比较”子菜单项,将把本地保存的文件与Subversion仓库中的文件进行比较。

提交

在新建文件或对文件内容进行修改后,需要通过提交操作把新建文件或对文件的修改内容提交到仓库中。鼠标右击需要提交的某个项目、文件或目录后点击“Subversion”菜单下的“提交...”子菜单执行提交操作,软件中显示用于填写提交信息及选取提交文件的对话框。

当需要保留部分文件或目录暂时不被提交时,取消选取该文件或目录的“提交”选项。双击某个目录或文件名对话框中显示该目录或文件与仓库中的版本的比较结果。

填写提交信息并选取需要被提交的文件后点击对话框中的“提交”按钮,被选取的文件将被提交到仓库中,仓库中将记录“谁”、“何时”、“为什么”以及“怎样”等与该文件相关的操作信息。

更新

在多个开发者开发同一项目的场合下,需要在修改某个文件前首先对项目、目录或文件执行更新操作以获取项目、目录中所有文件或某个文件的最新版本。

在NetBeans软件中鼠标右击某个项目、目录或文件后点击“Subversion”菜单下的“更新”子菜单即可执行更新操作。

取消修改

在因为某些原因需要取消对文件所作出的修改时,可以鼠标右击某个项目、目录或文件后点击“Subversion”菜单下的“还原修改...”子菜单。

在弹出的对话框中可以指定将项目、目录中的所有文件或单个文件还原到哪一个版本。

搜索历史记录

当需要查看某个对项目、目录或文件所做出的修改记录时,可以鼠标右击某个项目、目录或文件后点击“Subversion”菜单下的“搜索历史记录...”子菜单。

在需要搜索过去某段日期内做出的修改时,可以在“搜索历史记录”面板中填入起始日期与结束日期。

点击“搜索历史记录”面板中的“搜索”按钮,面板中显示所有修改记录或指定日期段内的修改记录。

双击某个历史记录,面板中将逐文件显示本次修改涉及到哪些文件并给出“与早期比较”选项与“回退更改”选项。

选取某个文件后单击“与早期比较”选项将把该文件与前一版本进行比较并在面板中显示比较结果。

选取某个文件后单击“回退更改”选项将把该文件还原到前一版本(如果可以还原的话)。