Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1756803
  • 博文数量: 600
  • 博客积分: 10581
  • 博客等级: 上将
  • 技术积分: 6205
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-06 10:13
文章分类
文章存档

2016年(2)

2015年(9)

2014年(8)

2013年(5)

2012年(8)

2011年(36)

2010年(34)

2009年(451)

2008年(47)

分类:

2009-09-23 15:11:49

  1. 如果你已经安装了Subversion,svnserve已经运行,你需要在继续之前把它停下来。

  2. 运行Subversion安装程序,如果你在你的服务器上运行,可以跳过第4步。

  3. 打开资源管理器,进入Subversion的安装目录(通常是C:\Program Files\Subversion)的bin目录,找到文件svnserve.exeintl3_svn.dlllibapr.dlllibapriconv.dlllibapriutil.dlllibdb*.dlllibeay32.dllssleay32.dll,复制这些文件,或所有bin目录内的文件到你的服务器目录,例如c:\svnserve

3.2.3. 运行 svnserve

现在svnserve已经安装了,你需要在你的server运行它,最简单的方法是在DOS窗口或者windows快捷方式输入:

svnserve.exe --daemon

svnserve将会在端口3690等待请求,--daemon选项告诉svnserve以守护进程方式运行,这样在手动终止之前不会退出。

如果你没有创建一个版本库,根据下面的Apache服务器设置指令。

为了验证svnserve正常工作,使用TortoiseSVN版本库浏览器来查看版本库。

假定你的版本库位于c:\repos\TestRepo,你的服务器叫做localhost,输入:

svn://localhost/repos/TestRepo

当被版本库浏览器提示输入。

你也可以使用--root选项设置根位置来限制访问服务器的目录,从而增加安全性和节约输入svnserve URL的时间:

svnserve.exe --daemon --root drive:\path\to\repository

以前面的测试为例,svnserve运行命令为:

svnserve.exe --daemon --root c:\repos

然后在TortoiseSVN中我们的版本库浏览器URL缩短为:

svn://localhost/TestRepo

注意,当svnserve和版本库位于不同分区或盘符时也需要--root选项。

Svnserve 可以提供任意数量的版本库服务。只要将这些版本库放到你刚才定义的根目录下即可,然后使用相对于根的URL访问它们。

[警告] 警告

不要创建和访问网络共享上的 Berkeley DB 版本库,它不能存在于一个远程的文件系统,即使是映射到盘符的共享。如果你希望在网络共享使用 Berkeley DB,结果难以预料-你可能会立刻看到奇怪的错误,也有可能几个月之后才发现数据库已经损坏了。

3.2.3.1. 以服务形式运行 svnserve

如果你关心有必须有用户登录才能运行svnserve,或者担心有人关闭了svnserve而忘了重新启动,可以将svnserve设置为windows服务,从Subversion1.4开始,svnserve可以作为windows服务安装,在以前可以使用包裹器安装。

为了将svnserve安装为windows服务,执行下面的命令,就会创建一个会随windows自动启动的服务。

sc create svnserve binpath= "c:\svnserve\svnserve.exe --service 
	--root c:\repos" displayname= "Subversion" depend= tcpip start= auto
[提示] 提示

Microsoft现在建议服务运行于本地服务或网络服务帐户,参考The Services and Service Accounts Security Planning Guide。以本地服务帐户创建服务,需要在例子里追加下面几行。

obj= "NT AUTHORITY\LocalService"

请注意需要给本地服务帐户一些目录的适当权限,包括的Subversion和你的版本库,还有所有钩子脚本使用的应用。

为了使用包裹器安装svnserve,一个人为svnserve编写了SvnService。Magnus Norddahl采用了微软的骨架代码,Daniel Thompson做了进一步的改进。Daniel的版本可以从tigris.org下载。

许多更原始的工具像也可以工作,请注意你仍然需要使用--daemon选项运行svnserve。

最后,如果你可以访问Windows 2000/XP/2003资源工具箱,你可以使用来自微软的,这是微软官方的运行服务的方法,但是有一点混乱(需要编辑注册表),而且如果停止服务,它会直接杀掉svnserve,而不会让svnserve进行清理。如果你不想安装所有的资源工具箱,你可以从下载SrvAny组件。

3.2.4. svnserve 的认证

缺省的svnserve设置提供了匿名的只读访问,这意味着你可以使用svn://的URL进行检出和更新,或者使用TortoiseSVN的版本库浏览器查看版本库,但是不能提交任何修改。

为了打开对版本库的写访问,你可以编辑版本库目录的conf/svnserve.conf文件,这个文件控制了svnserve守护进程的配置,也提供了有用的文档。

为了打开匿名的写访问,只需要简单得设置:

[general]
anon-access = write

然而,你不会知道谁修改了版本库,因为svn:author属性是空的,你也不能控制谁来修改版本库,这是一个很危险的设置。

解决这个问题的一个方法是创建密码数据库:

[general]
anon-access = none
auth-access = write
password-db = userfile

这里userfilesvnserve.conf文件在同一个目录,这个文件也可以存在于文件系统的其他地方(当多个版本库使用相同的访问权限时尤其有用),并使用绝对路径引用,或者是conf的相对目录,使用\或盘符不能工作。userfile的结构如下:

[users]
username = password
...

这个例子拒绝所有的未认证用户(匿名)访问,给userfile中的用户读写权限。

[提示] 提示

如果维护多个版本库使用相同的密码数据库,使用一个认证域将让用户的工作更加简单,因为TortoiseSVN可以缓存你的凭证,所以你只需要输入一次,更多的信息可以看《使用 Subversion 进行版本管理》,对应的章节为和

3.2.5. 使用 svn+ssh 认证

另一种svnserve认证的方法是使用SSH来建立请求通道。

通过此方法,svnserve不会作为守护进程启动,而是SSH为你启动svnserve,以SSH授权用户运行,为此,你需要在你的服务器上有SSH守护进程。

详细描述安装和设置SSH已经超过了本文的范围,然而你可以在里查找“SSH”。

更多的关于svnserve的信息可以看。

3.2.6. svnserve 以路径为基础的授权

从Subversion1.3开始,svnserve支持与mod_authz_svn相同的路径为基础的授权模式,你需要编辑版本库路径下的conf/svnserve.conf引用的授权文件。

[general]
authz-db = authz

在这里,authz是你创建用来定义访问权限的文件,你可以为每一个版本库使用单独的文件,或者为所有的版本库使用相同的文件,关于此文件的格式可以查看。

阅读(1156) | 评论(0) | 转发(0) |
0

上一篇:svn版本库

下一篇: TortoiseSVN 命令

给主人留下些什么吧!~~