Windows下架设Subversion服务器

<!-- [if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:PunctuationKerning/> <w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:SpaceForUL/> <w:BalanceSingleByteDoubleByteWidth/> <w:DoNotLeaveBackslashAlone/> <w:ULTrailSpace/> <w:DoNotExpandShiftReturn/> <w:AdjustLineHeightInTable/> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:UseFELayout/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!-- [if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]--><!-- [if !mso]> <object classid="clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D" id=ieooui> </object> <style> st1\:*{behavior:url(#ieooui) } </style> <![endif]--><!-- [if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]-->

如何快速建立 Subversion 服务器,并且在项目中使用起来,这是大家最关心的问题,与 CVS 相比, Subversion 有更多的选择,也更加的容易,几个命令就可以建立一套服务器环境,可以使用起来。

本手册分为以下几个部分,为了说明简单是在 windows 下使用的方式,以方便资源有限的项目使用。在 UNIX 环境下,只是安装方式不同,命令执行并无太大区别。

·                                 软件下载

·                                 服务器安装

·                                 建立版本库( Repository

·                                 配置用户和权限

·                                 运行独立服务器

·                                 初始化导入

1 软件下载

官方网站 的下载二进制安装文件,来到 二进制包下载部分 ,找到 Windows NT, 2000, XP and 2003 部分,然后选择 Apache 2.0 或者 Apache 2.2 ,这样我们可以看到许多下载的内容,目前可以下载 Setup-Subversion-1.5.3.msi

2. 服务器安装

1 )服务器安装,直接运行 Setup-Subversion-1.5.3.msi ,根据提示安装即可,这样我们就有了一套服务器可以运行的环境。 (2) SVN 添加到 Windows 服务
             1.
新建一个文件夹用来存放库文件 c:\SVN
             2.
运行命令 :SVNService -install -d -r c:\svn 安装 Windows 服务
             3.
通过 Windows 服务管理平台启动 SVN 服务
 (3)
其它命令
             1.
改变服务设置 :
                
运行命令 :SVNService -setup -d -r <newsvnroot>
                
在实际操作中 ,<newsvnroot> 代表与 SubVersion 服务启动时不同的电子仓库目录 .
             2.
删除服务 :
                
运行命令 :SVNService -remove
系统文件配置 svnserve.conf

3 ,建立版本库( Repository

运行 Subversion 服务器需要首先要建立一个版本库( Repository ),可以看作服务器上存放数据的数据库,在安装了 Subversion 服务器之后,可以直接运行,如:

svnadmin create E:\svndemo\repository

就会在目录 E:\svndemo\repository 下创建一个版本库。

我们也可以使用 TortoiseSVN 图形化的完成这一步:
在目录 E:\svndemo\repository " 右键 ->TortoiseSVN->Create Repository here...“ 然后可以选择版本库模式, 这里使用默认即可, 然后就创建了一系列目录和文件。


4
,配置用户和权限

来到 E:\svndemo\repository\conf 目录,依据实际需要修改 svnserve.conf
# [general]
#
anon-access=none
#auth-access=write
#password-db=passwd
#authz-db=authz
#realm=repository


改为:
anon-access=none
auth-access=write
password-db=passwd
authz-db=authz
realm=repository

然后修改同目录的 passwd 文件,去掉下面三行的注释:
# [users]
# harry = harryssecret
# sally = sallyssecret
最后变成:
[users]
harry = harryssecret
sally = sallyssecret

  passwd 文件中, “=” 前的字符就是用户名,后面的就是密码。还要注意 “[users]” 前面的注释 “#” 一定要删除掉。在 passwd 文件中进行用户的添加。

5 ,运行独立服务器

在任意目录下运行:
svnserve -d -r E:\svndemo\repository
我们的服务器程序就已经启动了。 注意不要关闭命令行窗口 ,关闭窗口也会把 svnserve 停止。

6 ,初始化导入

来到我们想要导入的项目根目录,在这个例子里是 E:\svndemo\initproject ,目录下有一个 readme.txt 文件:
右键 ->TortoiseSVN->Import...
URL of repository 输入 “svn://localhost/trunk”
Import Message 中输入你的日志信息

完成之后目录没有任何变化,如果没有报错,数据就已经全部导入到了我们刚才定义的版本库中。

需要注意的是,这一步操作可以完全在另一台安装了 TortoiseSVN 的主机上进行。例如运行 svnserve 的主机的 IP 133.96.121.22 ,则 URL 部分输入的内容就是 “svn://133.96.121.22/trunk”

                         

 

 

 

 

. 环境和软件准备

操作系统: windowsXP sp2

 

Window-Subvsersion http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91

 

Windows 常用客户端 TortoiseSVN http://tortoisesvn.net/downloads

 

请下载 subversion 服务器软件和客户端,并默认安装(可以重新启动操作系统,以更新图标显示)。

 

2. 配置管理

2.1. 创建仓库 (svnadmin)

在硬盘上创建个空目录,作为 SVN 的仓库目录。如: E:\subversion\repository 。下面使用两种方式创建仓库的初时文件结构和存储方式。命令方式和 TortoiseSVN 客户端方式,后面所有文档都采用两种方式说明,其功能完全相同。请根据实际情况选择使用。

 

命令方式( DOS 下):

 

# 默认方式,采用 FSFS 方式存储数据,这是推荐方式,管理和迁移相对 bdb 方式简单

 

svnadmin create E:\subversion\repository

 

 

svnadmin create –fs-type bdb E:\subversion\repository

 

TortoiseSVN 客户端

 

注意在最新版本的 SVN1.4 ,采用本方式有兼容性问题,该客户端现在好想只支持 1.3 版本的 SVN 创建仓库

 

1. 使用 window exporer 或我的电脑,定位到 E:\subversion\repository ,并确保本目录为空。

 

2. 在本目录下,右键菜单中选择“ TortoiseSVN ”- > Create repository here

 

3. 在弹出的窗口中选择数据存在文件系统方式,使用默认选取 (FSFS) ,点击确定。

 

4. 检查本目录下是否有生产的系统文件和文件夹,如果有,成功!

 

2.2. 配置服务

进入仓库目录下的 conf 文件夹。也就是 E:\subversion\repository\conf

 

里面有 3 个默认的配置文件: authz passwd svnserve.conf

 

svnserve.conf 控制 svnserve 的启动配置选项,可以配置认证和授权方式,典型的配置是设置由 authz 控制授权, passwd 控制认证的方式来控制访问权限。也可以使用匿名方式,但不推荐。

 

使用 authz passwd 的典型配置:

 

请特别注意:以下三个配置文件的配置,每行有效配置前不能有空格,不然配置会失败。

 

服务配置文件 svnserve.conf

 

……

 

### 匿名方式不允许访问

 

anon-access = none

 

……

 

### Uncomment the line below to use the default password file.

 

### 表示访问仓库的认证有文件 passwd 提供的账户确定

 

password-db = passwd

 

……

 

### Uncomment the line below to use the default authorization file.

 

### 表示认证后的账户访问权限由文件 authz 定义

 

authz-db = authz

 

### This option specifies the authentication realm of the repository.

 

……

 

认证配置文件 passwd

 

passwd 文件实际提供访问本仓库的账户管理,文件格式就是 ini 方式的格式

 

[users]

 

harry = harryssecret

 

sally = sallyssecret

 

user=usersecret

 

这表示本仓库配置了二个用户及:其中一个用户 harry, 他的访问密码是 harryssecret 。访问密码可以使用明文,也可以使用 htpasswd.exe apache 服务器提供的工具方法,安装 apache 服务器后,在其 bin 目录中有该程序文件)进行加密处理。

 

授权配置文件 authz

 

该文件负责认证后的用户的权限控制,配置稍微复杂,但其实也就是个 ini 配置文件而已。

 

典型配置:

 

# groups 段提供配置组的功能 , 但组成员必须是 passwd 文件中定义的用户才有效。可以对组

 

# 进行权限控制,所有组成员具有组对应的访问权限。

 

[groups]

 

# 表示定义了一个管理组叫 admin_group, 包括 harry sally admin_group 前千万不能有空格

 

admin_group= harry, sally

 

# 下面就是定义具体仓库下目录的访问权限

 

# 一般对管理员来说都具有整个仓库的读写权限,一般人员对整个敞开具有读取权限,下面

 

# 就是这样的配置 ,[/] 表示整个仓库的根,组的引用使用 @ ,对应的权限可以是 r,w,rw 或空

 

[/]

 

@admin_group = rw

 

* = r

 

以上的配置完成后,我吗就可以启动服务器了,下面说明服务器的启动。

 

注意,以上 authz passwd 文件在管理中因为具体项目的加入和人员的变动会经常的修改,这也是 SVN 管理主要的工作

 

2.3. 启动服务 (svnserve)

Svn 服务器一般有三种方式, svnserve apache SSH 。其中常用的有 svnserve apache 方式。本文只以 svnserve 方式讲解。总的来说 svnserve 是最高效的方式,一般应用于内部开发网中使用。 Apache 方式因为可以很好的部署在 internet 上,所以公网使用最方便,但配置稍微相对复杂点点,呵呵~~。三种方式具体的优缺点,请参考本文后面的参考文档。

 

命令方式( DOS 下):

 

svnserve –d –r E:\subversion\repository

 

-d 参数是以独立服务的方式启动

 

-r 是制订要加载的仓库的物理路径

 

Windows 系统服务

 

subversion1.4 后的版本,提供了安装为服务的支持

 

可以参考本文安装: .

 

SC create svn1.4 binPath= "\"C:\Program Files\Subversion\bin\svnserve.exe\" --service --root \"E:\subversion\repository\"" depend= Tcpip start= auto

 

1. 红色部分: SVN 的安装目录

 

2. 蓝色部分:仓库根目录

 

3. 每个参数的格式是:参数名称 = 值。参数名称和 = 间没有空格, = 后必须有空格, SC 的变态特性,完全的 BUG.. 注意就可以了

 

4. 本命令方式只能用于 svn1.4 以上版本

 

5. 删除服务: sc delete svn1.4

 

2.4. 添加项目 (import)

上面的安装配置工作完成后,启动服务,现在进入使用的主题,首先一步是把需要进行版本管控的项目加入到仓库中。在作这个工作前,需要先接受下, SVN 推荐的项目路径结构。一般推荐是使用一个 trunk 保存项目主干最新版本, breaches 保存以后的多个分支, tags 一般保存发布或阶段性发布的标签版本。如下

 

Project1/trunk

 

Project1/breaches

 

Project1/tags

 

下面我吗使用该目录结构,加入一个测试的项目 project1 来演示添加项目的过程。

 

在任意目录建立文件夹 test ,然后在 test 下建立上面推荐的项目目录结构。如下

 

test/project1/trunk

 

test/project1/breaches

 

test/project1/tags

 

命令方式:

 

DOS 下定位到 test 的上级目录

 

svn import test svn://localhost -m "init project1" --username harr y --password=harryssecret

 

新增     test\project1

 

新增     test\project1\trunk

 

新增     test\project1\readme.txt

 

新增     test\project1\breaches

 

新增     test\project1\tags

 

提交后的修订版为 1

 

TortoiseSVN 客户端

 

1. 右键点击 test 目录,选择“ TortoiseSVN ”- > Import

 

2. 在弹出的操作界面中 URL repository 中输入服务器地址 svn://localhost

 

3. 在弹出的操作界面中 Import message 下面的文本域输入 init project1

 

4. 点击 OK

 

5. 如果第一次使用,会弹出输入账户的界面,输入对应的用户账户,选择保存,下次使用就不用在输入账户认证信息了。

 

查看是否添加成功:

 

1. 使用 window exporer 或我的电脑,定位到 E:\subversion\repository ,并确保本目录为空。

 

2. 在本目录下,右键菜单中选择“ TortoiseSVN ”- > Repo-browser

 

3. 在弹出的输入框中输入 SVN 服务器地址 svn://localhost

 

4. Repository Browser 窗口中,你可以点击树形结构的仓库目录,查看是否存在你刚才添加的 project1

 

5. 如果你的用户有足够的权限,你可以在本界面的树目录上使用右键管理你的仓库和项目。

 

2.5. 工作副本 (checkout)

工程加入到仓库后,下面就可以进入实际的研发使用了,首先是要建立个本地的工作副本,使用 checkout

 

1. 在任意开发机上建立工作目录。如: D:\workspace\project1

 

2. 进入具体项目的工作目录,右键菜单中选择“ SVN Checkout

 

3. checkout 窗口中:

 

URL of Repository 是你具体的项目的主干仓库访问地址

 

如: svn://localhost/project1/trunk

 

Checkout directory 是你本地副本的地址

 

如: D:\workspace\project1

 

其它的使用默认选项,如需要了解具体含义,请查看参考文档

 

4. 点击 OK

 

2.6. 常用开发操作

以下主要都是在工作副本的开发中的常用操作。

 

2.6.1 . 更新和同步

其它开发人员或在其它工作副本上提交到仓库的最新版本文件,需要更新到你自己的工作副本的操作。使用更新使你的工作副本于服务器仓库代码同步。如果你更新的文件中本地副本和服务器仓库中的文件都是在同一版本上,本地副本作了修改文件操作后, SVN 没有办法更新,因为它不知道是否该放弃本地的修改,它默认会操作合并的方式,但往往很多时候有些文件是不能简单的自动合并的,所有最好的办法是以仓库的版本为准进行更新,这就是同步操作。

 

下面主要说明使用客户端工具 TortoiseSVN 的操作方式,其它客户端工具和命令方式类似。

 

1. 在需要更新或同步文件上或文件夹内右键点击,选择 SVN update 命令

 

2. 如果需要同步某个文件或文件夹,需要先删除本地版本,然后在使用 SVN update

 

2.6.2 . 添加和提交

。。。

 

3. 参考文档

1. Svn 安装后的官方文档

 

2. SVN 中文官方网站: http://www.subversion.org.cn

 

3. 中文文档: http://www.subversion.org.cn/svnbook/

猜你喜欢

转载自gnnan.iteye.com/blog/1168298