前段时间在开发一个版本管理的工具,其中版本控制用的是开源的svn.说到TortoiseSVN 客户端,相信大家都不陌生,但是这次我要管理的是svn server,于是只能赶紧开始学习,收获颇多,现在将学习的过程分享一下。
强调一点,我是在windows 平台环境下操作的。
#什么是 Subversion
Subversion是一个自由/开源版本控制系统,它管理文件和目录可以超越时间。一组文件存放在中心版本库,这个版本库很像一个普通的文件服务器,只是它可以记录每一次文件和目录的修改,这便使你可以取得数据以前的版本,从而可以检查所作的更改。从这个方面看,许多人把版本控制系统当作一种“时间机器”。
Subversion可以通过网络访问它的版本库,从而使用户可以在不同的电脑上使用。一定程度上可以说,允许用户在各自的地方修改同一份数据是促进协作。进展可能非常的迅速,并没有一个所有的改变都会取得效果的通道,由于所有的工作都有历史版本,你不必担心由于失去某个通道而影响质量,如果存在不正确的改变,只要取消改变。
一些版本控制系统也是软件配置管理(SCM)系统,这种系统经过特定的精巧设计来管理源代码,有许多关于软件开发的特性—本身理解编程语言、或者提供构建程序的工具。然而,Subversion不是这样一个系统,它是一个通用系统,可以管理任何类型的文件集,对你这可能是源代码,对别人,可能是一个货物报价单或者是书稿等。
#什么事版本库(repository)
Subversion 的核心就是 repository ,中文翻译成“版本库”。就是位于服务器端,统一管理和储存数据的地方。
下面开始介绍安装配置
安装独立服务器 SVNServer
环境
OS:Windows XP SP2
SVN:svn-win32-1.4.6
一、准备工作
1、获取 Subversion 服务器程序
到官方网站(http://subversion.tigris.org/)下载最新的服务器安装程序。具体下载地址在:http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=8100&expandFolder=8100&folderID=91
2、获取 TortoiseSVN 客户端程序
从官方网站 http://tortoisesvn.net/downloads 获取最新的 TortoiseSVN 。TortoiseSVN 是一个客户端程序,用来与 subvers 服务器端通讯。Subversion 自带一个客户端程序 svn.exe ,但 TortoiseSVN 更好操作,提高效率。
二、安装服务器端和客户端
安装 Subversion(以下简称SVN)的服务器端和客户端。下载下来的服务器端是个 zip 压缩包,直接解压缩即可,比如我解压到 C:\subversion 。客户端安装文件是个 exe 可执行文件,直接运行按提示安装即可,客户端安装完成后提示重启。
三、建立版本库(Repository)
运行Subversion服务器需要首先要建立一个版本库(Repository)。版本库可以看作是服务器上集中存放和管理数据的地方。
开始建立版本库。首先建立 c:\svn 空文件夹作为所有版本库的根目录。然后,进入命令行并切换到subversion的bin目录。输入如下命令:
svnadmin create C:\svn\repos1
此命令在 C:\svn 下建立一个版本库 repos1 。repos1 下面会自动生成一些文件夹和文件。
我们也可以使用 TortoiseSVN 图形化的完成这一步:
先建立空目录 C:\svn\repos1 ,注意一定是要空的。然后在 repos1 文件夹上“右键->TortoiseSVN->Create Repository here...”,然后可以选择版本库模式,这里使用默认的FSFS即可,然后就创建了一系列文件夹和文件,同命令行建立的一样。
四、运行独立服务器
此时 subversion 服务还没有开始,只是通过它的命令建立了版本库。继续在刚才的命令窗口输入:
svnserve.exe --daemon
svnserve 将会在端口 3690 等待请求,--daemon(两个短横线)选项告诉 svnserve 以守护进程方式运行,这样在手动终止之前不会退出。注意不要关闭命令行窗口,关闭窗口会把 svnserve 停止。
为了验证svnserve正常工作,使用TortoiseSVN -> Repo-browser 来查看版本库。在弹出的 URL 对话框中输入:
svn://localhost/svn/repos1
点 OK 按钮后就可以看见 repos1 版本库的目录树结构了,只不过这时 repos1 是个空库。
你也可以使用--root选项设置根位置来限制服务器的访问目录,从而增加安全性和节约输入svnserve URL的时间:
svnserve.exe --daemon --root drive:\path\to\repository
以前面的测试作为例,svnserve 将会运行为:
svnserve.exe --daemon --root e:\svn
然后TortoiseSVN中的版本库浏览器URL缩减为:
svn://localhost/repos1
五、配置用户和权限
我们会在目录结构中找到一个叫做conf的文件夹,打开这个文件夹,你会看到三个文件,分别叫做authz,passwd,svnserve.conf,它们是全部权限控制的关键了,我们一个一个来看。
1.配置用户名/密码
用文本编辑器打开C:\svn\repos1\conf目录,修改svnserve.conf:
将:
# password-db = passwd
改为:
password-db = passwd
即去掉前面的 # 注释符,注意前面不能有空格。
然后修改同目录的passwd文件,增加三个帐号:
将:
[users]
# harry = harryssecret
# sally = sallyssecret
增加帐号:
[users]
#harry = harryssecret
#sally = sallyssecret
test = test
friend = friend
stranger = stranger
2.控制用户读写权限
下面,我们来介绍authz这个文件,这个文件是控制权限的关键。
同样打开这个文件,你会看到一些注释掉的语句,
# [groups]
# [/foo/bar]
# [repository:/baz/fuz]
下面,我们介绍一下用户组的概念。所谓用户组,顾名思义,就是一个成员组,一般情况下,在同一个成员组的人员享有同样的权力,比如读,写权。Subversion为我们提供了一个很好的用户组应用。
在之前,我们一共建立三个用户,test,friend和stranger,我们现在设想一下我们的组情况,假设我们希望test和friend在开发组中,这两个用户具有读和写的权力,而用户stranger在测试组中,只具备读的权力。那么我们该如何来控制这个权限呢?看看下面的代码:
我们先在[groups]标记下面,输入组的名称:
dev_group = test, friend
test_group = stranger
到目前为止,我们已经为三个用户分好了用户组,其中test和friend在dev_group中,而stranger则在test_group中。
下面,我们为两个组来分配权限。
首先我们要为这两个组所能访问的工程做一个规定,后面会向版本库提交了一个名为“TestProj”的项目,下面我就假设刚刚建立的两个用户组都需要最这个工程进行操作。
我们在authz文件中,写下[TestProj],这个是指定我们下面将对TestProj项目进行定义。
我们使用如下代码:
@dev_group = rw
@test_group = r
这就定义了,对TestProj项目,dev_group用户组可以进行读,写操作,而test_group用户组则只具备读的权限。
为了阻止其他用户组对这个文件有读的权力,我们可以再添加一句:
* =
这个语句就是指定其他的用户组的权力为空,也就是没有权力。
### This file is an example authorization file for svnserve.
### Its format is identical to that of mod_authz_svn authorization
### files.
### As shown below each section defines authorizations for the path and
### (optional) repository specified by the section name.
### The authorizations follow. An authorization line can refer to a
### single user, to a group of users defined in a special [groups]
### section, or to anyone using the '*' wildcard. Each definition can
### grant read ('r') access, read-write ('rw') access, or no access
### ('').
[groups]
# harry_and_sally = harry,sally
dev_group = test,friend
test_group = stranger
# [/foo/bar]
# harry = rw
# * =
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
[/TestProj]
@dev_group = rw
@test_group = r
* =
3.最后,svnserve.conf是Subversion权限配置的主文件,类似于读取相关信息的枢纽。
为了让我们刚刚配置的两个文件(passwd和authz)起作用,我们需要去掉password-db = passwd和authz-db = authz前面的注释符“#”,让Subversion知道要从上面两个文件中读取相关信息。
当然,你也可以指定其他的认证文件,写法如下:
password-db = ..\..\passwd
authz-db = ..\..\authz
以此类推。
在实战过程中,处于安全的考虑,我们往往要限制对匿名用户的访问权限,所以我们可以将anon-access = read前面的“#”去掉,并将read参数修改为none,表明禁止匿名用户对版本控制库的访问。
### This file controls the configuration of the svnserve daemon, if you
### use it to allow access to this repository. (If you only allow
### access through http: and/or file: URLs, then this file is
### irrelevant.)
### Visit http://subversion.tigris.org/ for more information.
[general]
### These options control access to the repository for unauthenticated
### and authenticated users. Valid values are "write", "read",
### and "none". The sample settings below are the defaults.
anon-access = none
# auth-access = write
### The password-db option controls the location of the password
### database file. Unless you specify a path starting with a /,
### the file's location is relative to the conf directory.
### Uncomment the line below to use the default password file.
password-db = passwd
### The authz-db option controls the location of the authorization
### rules for path-based access control. Unless you specify a path
### starting with a /, the file's location is relative to the conf
### directory. If you don't specify an authz-db, no path-based access
### control is done.
### Uncomment the line below to use the default authorization file.
authz-db = authz
### This option specifies the authentication realm of the repository.
### If two repositories have the same authentication realm, they should
### have the same password database, and vice versa. The default realm
### is repository's uuid.
# realm = My First Repository
至此,你可以控制你的项目,对其进行访问权限的控制了。
六、初始化导入
下面就是将我们的数据(项目)导入到这个版本库,以后就由版本库管理我们的数据。我们的任何改动都回被版本库记录下来,甚至我们自己丢失、改错数据时版本库也能帮我们找回数据。
比如,我在 c:\ 下有个 TestProj文件夹,里面存放的是我编写的程序。在此文件夹上“右键 -> TortoiseSVN -> Import...” ,在弹出对话框的“URL of repository”输入“svn://localhost/repos1/TestProj”。在“Import message”输入“TestProj”作为注释。
点 OK 后要求输入帐号。我们在用户名和密码处都输入 test 。完成后 TestProj中的内容全部导入到了 svn://localhost/svn/repos1/TestProj。
我们看到在 c:\svn\repos1 没有任何变化,连个 TestProj文件夹都没有建立,唯一的变化就是e:\svn\repos1容量变大了。实际上我们源TestProj中的内容已经导入 repos1 版本库了,源 TestProj文件夹可以删除了。
需要注意的是,这一步操作可以完全在另一台安装了 TortoiseSVN 的客户机上进行。例如运行svnserve的主机的IP是133.96.100.20,则URL部分输入的内容就是“svn://133.96.100.20” 。
七、基本操作流程
1、取出(check out)
取出版本库到一个工作拷贝:
来到任意空目录下,比如在c分区建立一个空文件夹 c:\work 。“右键 -> SVN Checkout”。在“URL of repository”中输入“svn://localhost/svn/repos1/TestProj”,这样我们就得到了一份 TestProj中内容的工作拷贝。
2、存入(check in)/提交(commit)
在工作拷贝中作出修改并提交:
在 guestbook 工作拷贝中随便打开一个文件,作出修改,然后“右键 -> SVN Commit... ”。这样我们就把修改提交到了版本库,版本库根据情况存储我们提交的数据。
在修改过的文件上“右键 -> TortoiseSVN -> Show Log” ,可以看到对这个文件所有的提交。在不同的 revision 条目上“右键 -> Compare with working copy”,我们可以比较工作拷贝的文件和所选 revision 版本的区别。
分享到:
相关推荐
### CollabNet Subversion Server与TortoiseSVN的配置详解 #### 一、CollabNet Subversion Server简介 CollabNet Subversion Server是一款功能强大的版本控制系统,它结合了Apache Web服务器与Subversion版本控制...
【知识点详解】 Linux环境下搭建Subversion(简称svn)服务器,主要涉及到两个方面:一是Subversion自身服务的搭建,二是与Apache服务器的集成。Subversion是一个开源的版本控制系统,用于跟踪文件和目录的变更,...
### CollabNet Subversion 1.5 安装与配置详解 #### 一、引言 在当前软件开发过程中,版本控制系统扮演着极其重要的角色。其中,Subversion(SVN)作为一款广受欢迎的集中式版本控制系统,在项目管理和代码协同...
- **配置 Java 环境变量**:如果安装 Subversion Edge 前没有安装 Java 和 Python,那么安装过程中会自动同步安装。配置 Java 环境变量的具体步骤如下: - 设置 `JAVA_HOME` 变量为 Java 安装路径,例如:`JAVA_...
【Subversion配置详解】 Subversion(简称SVN)是一款开源的版本控制系统,广泛应用于软件开发团队协作中,便于管理代码的版本和协同工作。在Linux系统下安装Subversion,主要涉及以下步骤: 1. **安装Subversion...
### Subversion (SVN) 服务器端安装及配置详解 #### 一、概述 Subversion (SVN) 是一种集中式版本控制系统,广泛应用于软件开发过程中。本文将详细介绍如何在Windows环境下安装和配置SVN服务器。 #### 二、安装...
### Apache + SVNServer 配置详解 #### 一、配置前准备 在开始Apache与Subversion(SVN)服务器的配置之前,确保已正确安装Apache Web服务器和Subversion。本指南将详细介绍如何在Windows环境下配置Apache与...
### Windows 下 Subversion 配置管理员指南 #### 一、Subversion 与 Windows 服务集成 随着 Subversion 的不断更新与发展,从 Subversion 1.4 版本开始,其自身集成了支持 Windows 作为服务的功能,这标志着不再...
《基于Apache的Subversion服务器配置详解》 Subversion(简称SVN)是一种广泛使用的版本控制系统,它允许开发者在团队环境中协作开发项目,跟踪文件和目录的变更。在配置Subversion服务器时,Apache HTTP Server...
《Subversion 1.5.6安装与配置详解》 Subversion(简称SVN)是一款广泛应用的版本控制系统,它能够管理文件和目录的历史版本,便于团队协作开发中的代码同步和历史追溯。本篇将详细讲解如何通过"Setup-Subversion-...
**Apache Subversion 1.10.3 服务端详解** Apache Subversion(简称SVN)是一个开源的版本控制系统,广泛应用于软件开发团队中的代码管理与协作。Subversion 1.10.3是该系统的一个稳定版本,提供了对代码提交、版本...
1.8 Tomcat5启动流程与配置详解 1.9 HttpServlet详解 1.10 Ant使用入门 1.11 Maven Ant之间的比较 1.12 详解MANIFEST.MF文件 1.13 Maven入门--概念与实例 1.14 Subversion 1.15 jar war ear区别 1.16 如何在...
### SVN配置详解 #### 1. 版本控制与Subversion简介 版本控制是一种软件工程实践,用于跟踪和管理文件及目录的历史变更记录。通过版本控制系统,开发人员能够记录每一个微小的更改,确保在遇到问题时能够快速回滚...
### Windows 下 SVNServer 安装与配置详解 #### 一、引言 随着软件项目的规模不断扩大,版本控制成为团队协作开发中不可或缺的一部分。Subversion(简称 SVN)作为一款广泛应用的集中式版本控制系统,在项目管理和...
7. Excel配置详解:提供的`VisualSVN Server客户端修改密码配置.xlsx`文件可能是用来记录和规划用户和权限配置的表格。在这个文件中,你可以列出用户名、密码、所属组以及对应的仓库访问权限,方便管理和批量导入。 ...
《Subversion源码安装详解与核心组件解析》 Subversion(简称SVN)是一款广泛使用的版本控制系统,它允许用户在多个人协作的环境下管理文件和目录的修改历史。本篇文章将深入探讨Subversion的源码安装过程,并逐一...
《VisualSVN Server 4.2.2在Windows 64位系统上的安装与使用详解》 VisualSVN Server是一款高效、易用的Subversion(SVN)服务器管理软件,专为Windows平台设计。该软件的最新版本为4.2.2,提供了64位版本以充分...
SVN(Subversion)是一种广泛使用的版本控制系统,用于管理和跟踪文件和目录的变更。它允许团队成员协同工作,记录每次更改,以便于回溯、合并和恢复错误。本篇文章将详细解析SVN服务器的配置过程,包括客户端和...
### SVN的安装与配置详解 #### 一、SVN简介 **SVN**(Subversion)是一种开源的版本控制系统,广泛应用于软件开发过程中对代码版本的管理。SVN能够帮助团队成员有效地协作,并且能够清晰地跟踪每一个版本的变更...