`
胡笨笨
  • 浏览: 162082 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Subversion Server 配置详解

阅读更多

前段时间在开发一个版本管理的工具,其中版本控制用的是开源的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 版本的区别。

2
0
分享到:
评论

相关推荐

    CollabNet Subversion Server与Tortoisesvn的配置,进行版本管理

    ### CollabNet Subversion Server与TortoiseSVN的配置详解 #### 一、CollabNet Subversion Server简介 CollabNet Subversion Server是一款功能强大的版本控制系统,它结合了Apache Web服务器与Subversion版本控制...

    linux下subversion+apache server搭建

    【知识点详解】 Linux环境下搭建Subversion(简称svn)服务器,主要涉及到两个方面:一是Subversion自身服务的搭建,二是与Apache服务器的集成。Subversion是一个开源的版本控制系统,用于跟踪文件和目录的变更,...

    CollabNet Subversion1.5安装配置.pdf

    ### CollabNet Subversion 1.5 安装与配置详解 #### 一、引言 在当前软件开发过程中,版本控制系统扮演着极其重要的角色。其中,Subversion(SVN)作为一款广受欢迎的集中式版本控制系统,在项目管理和代码协同...

    Subversion Edge详细安装与使用手册

    - **配置 Java 环境变量**:如果安装 Subversion Edge 前没有安装 Java 和 Python,那么安装过程中会自动同步安装。配置 Java 环境变量的具体步骤如下: - 设置 `JAVA_HOME` 变量为 Java 安装路径,例如:`JAVA_...

    subversion的配置

    【Subversion配置详解】 Subversion(简称SVN)是一款开源的版本控制系统,广泛应用于软件开发团队协作中,便于管理代码的版本和协同工作。在Linux系统下安装Subversion,主要涉及以下步骤: 1. **安装Subversion...

    subversion安装和配置

    ### Subversion (SVN) 服务器端安装及配置详解 #### 一、概述 Subversion (SVN) 是一种集中式版本控制系统,广泛应用于软件开发过程中。本文将详细介绍如何在Windows环境下安装和配置SVN服务器。 #### 二、安装...

    apache+svnserver配置

    ### Apache + SVNServer 配置详解 #### 一、配置前准备 在开始Apache与Subversion(SVN)服务器的配置之前,确保已正确安装Apache Web服务器和Subversion。本指南将详细介绍如何在Windows环境下配置Apache与...

    Windows下Subversion配置管理员指南

    ### Windows 下 Subversion 配置管理员指南 #### 一、Subversion 与 Windows 服务集成 随着 Subversion 的不断更新与发展,从 Subversion 1.4 版本开始,其自身集成了支持 Windows 作为服务的功能,这标志着不再...

    subversion基于Apache的服务器配置[借鉴].pdf

    《基于Apache的Subversion服务器配置详解》 Subversion(简称SVN)是一种广泛使用的版本控制系统,它允许开发者在团队环境中协作开发项目,跟踪文件和目录的变更。在配置Subversion服务器时,Apache HTTP Server...

    Setup-Subversion-1.5.6.msi

    《Subversion 1.5.6安装与配置详解》 Subversion(简称SVN)是一款广泛应用的版本控制系统,它能够管理文件和目录的历史版本,便于团队协作开发中的代码同步和历史追溯。本篇将详细讲解如何通过"Setup-Subversion-...

    Apache Subversion1.10.3服务端SVN

    **Apache Subversion 1.10.3 服务端详解** Apache Subversion(简称SVN)是一个开源的版本控制系统,广泛应用于软件开发团队中的代码管理与协作。Subversion 1.10.3是该系统的一个稳定版本,提供了对代码提交、版本...

    J2EE JNDI配置原理详解 JBOSS安装配置 Maven入门 Ant使用入门

    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配置详解

    ### SVN配置详解 #### 1. 版本控制与Subversion简介 版本控制是一种软件工程实践,用于跟踪和管理文件及目录的历史变更记录。通过版本控制系统,开发人员能够记录每一个微小的更改,确保在遇到问题时能够快速回滚...

    Windows下SVNServer安装与配置详解

    ### Windows 下 SVNServer 安装与配置详解 #### 一、引言 随着软件项目的规模不断扩大,版本控制成为团队协作开发中不可或缺的一部分。Subversion(简称 SVN)作为一款广泛应用的集中式版本控制系统,在项目管理和...

    VisualSVN Server客户端修改密码配置

    7. Excel配置详解:提供的`VisualSVN Server客户端修改密码配置.xlsx`文件可能是用来记录和规划用户和权限配置的表格。在这个文件中,你可以列出用户名、密码、所属组以及对应的仓库访问权限,方便管理和批量导入。 ...

    svn_subversion.rar

    《Subversion源码安装详解与核心组件解析》 Subversion(简称SVN)是一款广泛使用的版本控制系统,它允许用户在多个人协作的环境下管理文件和目录的修改历史。本篇文章将深入探讨Subversion的源码安装过程,并逐一...

    VisualSVN-Server-4.2.2-x64.msi_svnserver_windows_64bit_

    《VisualSVN Server 4.2.2在Windows 64位系统上的安装与使用详解》 VisualSVN Server是一款高效、易用的Subversion(SVN)服务器管理软件,专为Windows平台设计。该软件的最新版本为4.2.2,提供了64位版本以充分...

    SVN服务器配置详解

    SVN(Subversion)是一种广泛使用的版本控制系统,用于管理和跟踪文件和目录的变更。它允许团队成员协同工作,记录每次更改,以便于回溯、合并和恢复错误。本篇文章将详细解析SVN服务器的配置过程,包括客户端和...

    SVN的安装以及配置详解

    ### SVN的安装与配置详解 #### 一、SVN简介 **SVN**(Subversion)是一种开源的版本控制系统,广泛应用于软件开发过程中对代码版本的管理。SVN能够帮助团队成员有效地协作,并且能够清晰地跟踪每一个版本的变更...

Global site tag (gtag.js) - Google Analytics