这是鄙人在完成软件项目与过程管理的课后实验做业的全过程及心得体会。 但愿能对初次使用本地版本管理工具SVN的你有所帮助。
软件项目与过程管理是我所在的专业大三时才修习的一门课程,。 在实验课以前,我除了初步地使用过git,其余并没有接触过版本管理工具。任课老师在课程开始的几分钟内,给咱们简单的介绍了SVN,便将实验指导书和老师曾经编写的一份Java实践开发工具文档给咱们,让咱们自学其中的内容,并完成实验报告。过程当中,实验指导书上的步骤并不详细,致使我及其余同窗都没能很好地从其中学习到SVN的配置方法及基本操做方法。 因而,我开始在网上寻求答案,可网上的相关博客文章大多不够详细,且难以理解。几经查找学习并尝试,我终于完成了最基本的操做。
版本控制【Revision control】,最初来源于工程设计领域,是维护工程蓝图的标准作法,能追踪工程蓝图从诞生一直到定案的过程,是一种记录若干文件内容变化,以便未来查阅特定版本修订状况的系统。 Subversion就是一款实现版本控制的工具软件,一般也被称为版本控制器,简称SVN。Subversion是Apache软件基金会组织下的一个项目。
Server指的是Subversion服务器端的一个程序;程序接受来自客户端的请求并响应;数据保存在SVN repositorygit
svn --version
,以检验svn环境变量配置是否正确。显示出以下图所示的SVN版本信息等内容,即代表环境变量配置成功。到目前为止,咱们只配置好了SVN的Server服务器,要想让SVN真正能用,咱们还须要建立svn的repository,用于存放提交上的数据。程序员
我在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跟文件的锁定有关
运行客户端,咱们须要在命令行中输入命令 `svnserve -d -r D:\svnRep\CRM` ![图片描述][5] 此时,命令行再也不容许你输入指令,代表服务器已经启动 咱们能够经过查看它是否监听3690的端口确认服务是否启动。 在另外一个命令行中输入以下指令 netstat -an,查找地址尾号为3690的地址,若是存在则代表服务确实启动了。 ![图片描述][6] 咱们能够看到如图所示的 尾号为3690的本地地址
sc create SVNservice binpath= "D:\做业\软件过程与项目管理实验课\实验二 Subversion及TortoiseSVN实验\Apache-Subversion-1.10.2\bin\svnserve.exe --service -r D:\svnRep" start= auto depend= Tcpip
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA
将其值改成0。netstat -an
来查看是否存在3690的本地地址。接下来咱们进入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中的内容已被更新。服务器