svnserve 是一个轻量级的服务, 使用自定义的协议通过TCP/IP与客户端通讯。 客户端通过由 svn:// 或者 svn+ssh:// 开始的URL访问

svnserve 是一个轻量级的服务, 使用自定义的协议通过TCP/IP与客户端通讯。
客户端通过由 svn:// 或者 svn+ssh:// 开始的URL访问svnserve服务器。

启动服务器

端口监控(inetd)模式

如果你打算用端口监控来启动处理客户的访问请求的进程,你可以通过传入参数-i来启动:

svnserve -i

当使用-i参数启动服务的时候,svnserve通过stdin和stdout用自定义协议和客户端
通讯。同时服务侦听3690端口。

独立端口监控进程

使用参数-d启动服务作为一个独立的端口监控进程。

svnserve -d

当运行svnserve在独立端口监控模式时,你可以使用--listen-port=和--listen-host=参数来自定义需要的端口和主 机名称。当前模式默认的端口是3690。

当然,也有第三种方法启动svnserve,也就是使用“隧道模式”,使用-t参数启动服务。这个模式要求远程服务程序,如RSH或SSH,已经成 功验证用户,并且使用已经校验的用户启动一个属于该用户的svnserve进程。当使用该模式提供服务时,要确认启动的用户帐户具备对 Repository的读/写权限。

设置项目目录

当svnserve开始运行时,它将会暴露所有的Repository到网络上。不过,当客户端需要获取一个Repository的内容时,需要指 定Reopsitory的绝对路径。例如:一个Repository放在文件路径
C:/Project Repository/Project1
那 么当客户端访问时,需要指定绝对路径:
svn://host/C:/Project Repository/Project1
所以,为了 增加保密性,你可以使用参数-r指定需要暴露的Repository的路径,当用户访问时,只需指定Repository的名称即可。例如上面的 Repository,当启动服务时,使用如下的方法:
svnserve -d -r C:/Project Repository
那么 当客户端访问时,则使用
svn://host/Project1
就可以获取数据了。

内置的验证和授权

当客户端连接到一个svnserve进程时,下面的流程就会触发:
1、客户选择一个指定的Repository;
2、服务处理 Repository的配置文件 conf/svnserve.conf文件,并且开始执行在其中定义的所有验证和授权策略;
3、依赖与情形和授 权策略:
 a)客户端也许允许匿名访问而不需要验证,或者
 b)客户但也许需要在任何时候被要求验证,或者
 c)假如处于"隧道 模式"中,客户端将声明自己已经可以被外部验证。

很显然,如上所说,用户文件是一个名为svnserve.conf的,放在conf目录下的文件。
现在我们来看看如何配置这个文件:
这 个配置文件放置在Repository的目录中的conf目录下,它有两个节点:
[general]
[users]
其中, [general]的配置信息有:
anon-access = read
auth-access = write
其中表示对于验 证有效的以及没通过验证的用户可以做什么事情。分别有read, write和none

[users]的标签的配置内容有:
USERNAME = PASSWORD
password-db = passwd
realm = My First Repository
其中表示,用户名对应的密码是什么,或者指定一个存储用户名和密码的文件的相对或绝对路径以及指定 了Repository的验证领域。如果两个Repository有相同的验证领域,那么它们应该有相同的密码数据库,反之亦然。默认的领域就是指向当前 的Repository的路径,与服务器的Repository的根目录相关。

你可能感兴趣的:(C++,c,SVN,网络协议,ssh)