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

RabbitMQ信使
• 阅读 3425
这是鄙人在完成软件项目与过程管理的课后实验作业的全过程及心得体会。
希望能对初次使用本地版本管理工具SVN的你有所帮助。

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

版本控制及SVN的简介

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

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

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

  • 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的过程及心得体会
    显示的内容除了版本信息以外,还显示了一些可以使用的版本库访问模块

    到目前为止,我们只配置好了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 启动 计算机->管理->服务和应用程序
    初次安装SVN的过程及心得体会
    服务中有很多可自动或手动启用的服务
    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。
    创建成功的提示内容如下图所示。
    初次安装SVN的过程及心得体会
    此时,我们可以再次通过netstat -an来查看是否存在3690的本地地址。

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

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

在命令行中输入指令 `svn checkout svn://localhost/CRM`由于我们现在是将svn的Server部署在本机服务器上,所以是localhost。

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

这步操作我们是在SpaceA的目录下执行,所以是在将服务器库中的文件下载到SpaceA中,但是当前服务器的版本库中,并没有文件,所以SpaceA中仍热看不到文件。
执行指令后,命令行提示 检出版本 0。

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

初次安装SVN的过程及心得体会
原因是初次提交的时候,提交的文件未纳入版本控制。所以我们要在命令行中输入 svn add test.txt.
初次安装SVN的过程及心得体会
下面,我们在命令行中输入 svn commit svn_test.txt,执行后命令行可能还是会提示错误。
初次安装SVN的过程及心得体会
原因是,我们在提交时还应该添加日志。于是,我们在命令行中输入 svn commit -m "My first commit" svn_test.txt,但是命令行可能还是会提示错误。
初次安装SVN的过程及心得体会

这是由于权限不足,于是,我们还需要版本库的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成功。

初次安装SVN的过程及心得体会
提示后的版本号为1,这1指的不是每个文件的版本号,是整个版本库,当前版本的版本号。
我们再通过命令行从版本库中commit文件到SpaceB中。
初次安装SVN的过程及心得体会
接下来我们来实现版本库文件的更新。
修改SpaceB中的svn_test.txt中的内容。如下图所示。
初次安装SVN的过程及心得体会

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

初次安装SVN的过程及心得体会
提交后的版本号为2.
下面,我们进入到SpaceA中的CRM,我们通过命令行的指令来更新CRM中的svn_test.txt.
指令为 svn update svn_test.txt
初次安装SVN的过程及心得体会
此时,我们可以发现SpaceA中的svn_test.txt中的内容已被更新。
初次安装SVN的过程及心得体会

点赞
收藏
评论区
推荐文章
雷厉风行 雷厉风行
2年前
Mac程序员开发必备-Cornerstone for Mac 永久版-SVN 管理工具
CornerstoneforMac是一款Mac程序员开发必备的SVN管理工具。它提供了简单易用的用户界面和先进的版本控制功能,帮助程序员轻松管理和开发SVN代码。
晴雯 晴雯
2年前
Cornerstone (SVN管理)for Mac版
使用CornerstoneforMac的主要原因是它是一款功能强大的SVN(Subversion)客户端软件。SVN是一个版本控制系统,用于管理和控制源代码版本。使用SVN可以帮助团队协作开发,保证代码的质量和稳定性。以下是使用测评:Cornerstone
晴雯 晴雯
2年前
SmartGit密钥许可 Git客户端 支持M1M2
是一款非常实用的版本控制工具。如果你是一名程序员,使用SmartGit可以帮助你更轻松地管理代码,在多人协作开发过程中更容易地掌控整个代码库。今天我就来分享一下我使用SmartGit的心得体会。首先,SmartGit有着非常友好的界面,让人很容易上手。安装
Stella981 Stella981
3年前
IntelliJ IDEA(八) :git的使用
项目管理离不开版本控制,目前主流版本控制工具大概就是SVN和Git,至于两者有啥区别这里就不详细介绍了,如果有不明白的可以上网查资料,后期如果有机会我再开篇栏目细说,而且现在市场上Git的使用率已经远远高于SVN。我们在用IDEA开发项目的时候如何熟练使用Git来控制代码版本呢?一、安装Git使用Git当然需要先安装Git,安装过程就
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
CentOS7 SVN安装及配置
 研发这边要管理文档,觉得SVN管理文档相关还是很不错的;之前项目代码用Git管理。在安装svn之前,先把svn相关依赖包安装好:一、安装1、aprwgethttp://apache.fayea.com/apr/apr1.5.2.tar.gztarzxvfapr1.5.2.tar.gzcdapr1.
Stella981 Stella981
3年前
DevOps世界中的软件开发
!(https://oscimg.oschina.net/oscnet/f40e68cbfe8148deb00f040b4e917a0a.jpg)在整个软件开发过程中,开发人员通常需要花费大量时间来修复错误和漏洞,以便一切按计划进行交付。但是,通过DevOps实践,可以更轻松地管理和保护这些问题。这是由于以下事实:使用DevOps实践的软
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
小尉迟 小尉迟
2年前
SVN管理工具Cornerstone入门教程
Cornerstonemac版是MacOS上最好用的SVN管理工具,如何使用Cornerstone?本文给大家带来了Cornerstone入门教程,希望对你有所帮助!创建一个新存储库使用以下步骤创建新存储库:选择FileAddRepository...(或
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
美凌格栋栋酱 美凌格栋栋酱
5个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(