初次安装SVN的过程及心得体会

这是鄙人在完成软件项目与过程管理的课后实验做业的全过程及心得体会。
但愿能对初次使用本地版本管理工具SVN的你有所帮助。

软件项目与过程管理是我所在的专业大三时才修习的一门课程,。
在实验课以前,我除了初步地使用过git,其余并没有接触过版本管理工具。任课老师在课程开始的几分钟内,给咱们简单的介绍了SVN,便将实验指导书和老师曾经编写的一份Java实践开发工具文档给咱们,让咱们自学其中的内容,并完成实验报告。过程当中,实验指导书上的步骤并不详细,致使我及其余同窗都没能很好地从其中学习到SVN的配置方法及基本操做方法。
因而,我开始在网上寻求答案,可网上的相关博客文章大多不够详细,且难以理解。几经查找学习并尝试,我终于完成了最基本的操做。

版本控制及SVN的简介

版本控制【Revision control】,最初来源于工程设计领域,是维护工程蓝图的标准作法,能追踪工程蓝图从诞生一直到定案的过程,是一种记录若干文件内容变化,以便未来查阅特定版本修订状况的系统。
Subversion就是一款实现版本控制的工具软件,一般也被称为版本控制器,简称SVN。Subversion是Apache软件基金会组织下的一个项目。
  • SVN的工做原理
    SVN采起客户端/服务器(C/S)模式--在服务器的版本库中保存项目文件的各个版本,全部参与协同开发的程序员在本身本地电脑上保存一个工做副本,这个工做副本能够为任意文件格式,代码、文档或者图片。SVN支持程序将本地副本更新到服务器端的最新版本,也支持将本地副本的最新版本更新到服务器端,并记录下版本号,并且后面的更新不会覆盖前面的更新版本,而是做为一个新的版本被保存下俩--SVN甚至支持将本地工做副本恢复为服务器端保存的某一个历史版本。

SVN工做原理拓扑图

Server指的是Subversion服务器端的一个程序;程序接受来自客户端的请求并响应;数据保存在SVN repositorygit

  • SVN的基本操做
    检出(checkout):将一个服务器端建立好的项目整个下载到本地,这是到项目组后参与开发的第一步,只需执行一次。
    更新(update):将本地文件更新为服务器端的最新版本,一般为天天工做开始前或修改公共文件以前执行一次。
    提交(commit):将本地修改提交到服务器端。一般为天天工做完成或每实现一个功能、完成一个慕课时执行一次。

Subversion的安装与配置

  • 下载与安装
    Apache-Subversion-1.10.2 官方下载地址:https://www.visualsvn.com/dow...
    下载后解压至安装目录,如:我放在了D:做业软件过程与项目管理实验课实验二 Subversion及TortoiseSVN实验Apache-Subversion-1.10.2
  • 配置
    接下来咱们须要为可以启用SVN,配置变量环境。
    找到系统变量中的path,添加变量值:D:做业软件过程与项目管理实验课实验二 Subversion及TortoiseSVN实验Apache-Subversion-1.10.2bin
    ps:这个变量路径也就是咱们解压后获得文件目录中bin文件夹的路径。配置环境变量的好处是咱们能够在命令行的任意目录下运行bin文件夹中的可执行程序。
  • 配置检查
    咱们能够经过在命令行内输入svn --version,以检验svn环境变量配置是否正确。显示出以下图所示的SVN版本信息等内容,即代表环境变量配置成功。
    图片描述
    显示的内容除了版本信息之外,还显示了一些可使用的版本库访问模块

    到目前为止,咱们只配置好了SVN的Server服务器,要想让SVN真正能用,咱们还须要建立svn的repository,用于存放提交上的数据。程序员

建立SVN版本库

我在D盘建立 D:\svnRep,svnRep即本地版本库的根目录,咱们但愿svnRep能帮助咱们管理多个项目。因此咱们在svnRep目录下建立不一样的文件夹,如我建立的OA和ERP,做为多个项目的存储库。可是此时我建立的文件夹还并未与Server相连,因此咱们还须要在命令行窗口下输入一些指令来完成这项操做。
咱们打开命令行,使用`svnadmin create D:\svnRep\CRM`,将该版本库与Server链接。
![图片描述][3]
create后的路径为版本库根目录的路径    
此时,在D:\svnRep\CRM目录下会多出一些文件。以下图所示。
![图片描述][4]
conf文件内是放在的是跟当前版本相关的配置文件,以后咱们在设置版本库权限的时候,会使用到其中的文件;db文件内保存的是server的数据库文件;hooks内存储的是钩子程序(相关操做触发器);locks跟文件的锁定有关

启动svn服务器

运行客户端,咱们须要在命令行中输入命令 `svnserve -d -r D:\svnRep\CRM` 
![图片描述][5]
此时,命令行再也不容许你输入指令,代表服务器已经启动
咱们能够经过查看它是否监听3690的端口确认服务是否启动。
在另外一个命令行中输入以下指令 netstat -an,查找地址尾号为3690的地址,若是存在则代表服务确实启动了。
![图片描述][6]
咱们能够看到如图所示的 尾号为3690的本地地址
  • 注册Windows服务
    因为启动服务器的命令行窗口是在第一个命令行窗口,一旦此命令行窗口被关闭,服务就会中止。咱们在实际操做中,一直开着该命令行窗口十分不便,因此咱们能够将svn服务端程序注册为Windows服务,就可让svn服务随系统一块儿启动。
    步骤以下:
    Step 1 启动 计算机->管理->服务和应用程序
    图片描述
    服务中有不少可自动或手动启用的服务
    Step 2 从新开启一个命令行窗口,输入命令 sc create SVNservice binpath= "D:\做业\软件过程与项目管理实验课\实验二 Subversion及TortoiseSVN实验\Apache-Subversion-1.10.2\bin\svnserve.exe --service -r D:\svnRep" start= auto depend= Tcpip
    之因此指定的版本库为svnRep,是由于这样访问时咱们能够决定访问svnRep下具体某一个仓库。
    执行了这段指令以后,命令行可能会弹出windowsOpenSCManager 失败5 拒绝访问的提示。这是由于咱们建立新服务的权限不足。有两种解决方法,第一种是以管理员身份运行命令行,第二种是在注册表HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA将其值改成0。
    建立成功的提示内容以下图所示。
    图片描述
    此时,咱们能够再次经过netstat -an来查看是否存在3690的本地地址。

客户端访问及svn三个基本命令的操做

接下来咱们进入svn的三个基本命令的操做。
我在D:\WorkSpace\WorkSpaceSVN 目录下建立了两个工做区文件夹,分别为SpaceA和SpaceB,表明两个成员的工做代码等存放的文件夹。咱们将经过svn实现文件在两个工做区文件夹的检出、更新和提交。

在命令行中输入指令 `svn checkout svn://localhost/CRM`因为咱们如今是将svn的Server部署在本机服务器上,因此是localhost。

图片描述

这步操做咱们是在SpaceA的目录下执行,因此是在将服务器库中的文件下载到SpaceA中,可是当前服务器的版本库中,并无文件,因此SpaceA中仍热看不到文件。
执行指令后,命令行提示 检出版本 0。

下面,咱们在SpcaeA的CRM下建立一svn_test.txt文件。在SpaceA\CRM\CRM的目录下提交这个文件。在命令行中输入的指令为`svn commit svn_test.txt`,执行后命令行可能会提示 提交失败。

图片描述
缘由是初次提交的时候,提交的文件未归入版本控制。因此咱们要在命令行中输入 svn add test.txt.
图片描述
下面,咱们在命令行中输入 svn commit svn_test.txt,执行后命令行可能仍是会提示错误。
图片描述
缘由是,咱们在提交时还应该添加日志。因而,咱们在命令行中输入 svn commit -m "My first commit" svn_test.txt,可是命令行可能仍是会提示错误。
图片描述数据库

这是因为权限不足,因而,咱们还须要版本库的conf中去设置权限。打开D:\svnRep\CRM\conf中的svnserve.conf将#anon-access=read,修改成anon-access=write。注意:annon-access前不能留有空格。修改并保存后,再次在原来的命令行中输入`svn commit -m "My first commit" svn_test.txt`,提示以下,即commit成功。

图片描述
提示后的版本号为1,这1指的不是每一个文件的版本号,是整个版本库,当前版本的版本号。
咱们再经过命令行从版本库中commit文件到SpaceB中。
图片描述
接下来咱们来实现版本库文件的更新。
修改SpaceB中的svn_test.txt中的内容。以下图所示。
图片描述windows

再将修改后的svn_test.txt,commit到版本库。以下图所示。

图片描述
提交后的版本号为2.
下面,咱们进入到SpaceA中的CRM,咱们经过命令行的指令来更新CRM中的svn_test.txt.
指令为 svn update svn_test.txt
图片描述
此时,咱们能够发现SpaceA中的svn_test.txt中的内容已被更新。
图片描述服务器

相关文章
相关标签/搜索