技术开发 频道

Subversion常见问题及解决方法

  【IT168 技术文档】摘要:Subversion版本控制使用中的常见问题及解决方法。

  ------------------------------------------------------------------分 割 线-----------------------------------------------------------------

  常见问题及解决方法

  1、路径或权限不足时将出现错误信息提示:

  http://localhost (路径不对)

  Error * PROPFIND request failed on '/' PROPFIND of '/': 200 OK (http://localhost)

  http://localhost/svn (权限不足)

  Error * PROPFIND request failed on '/svn' PROPFIND of '/svn': 403 Forbidden (http://localhost)

  http://localhost/svn/repos (正常显示)

  http://localhost/repos (权限不允许)

  Error * PROPFIND request failed on '/repos' PROPFIND of '/repos': 405 Method Not Allowed (http://localhost)

  解决办法是填写正确的路径或给予适当的权限。

  2、不启动E:\subversion\bin\svnserve.exe ,但启动了ApacheSVN ,访问(tortoiseSVN –> Repo – browser)或提交(SVN Commit)情形如下:

  现象:svn://localhost/svn/repos 不能访问或提交,提示:Error * Can't connect to host 'localhost': 由于目标机器积极拒绝,无法连接。 但 file:///e:/svn/repos 和 http://localhost/svn/repos 可以访问或提交。

  原因:svn:// 是独立服务器 svnserver 自己的协议。file:/// 是本地访问,即服务器端和客户端在一个机器上。

  解决方法:使用 http 方式访问。

  3、设置SVNListParentPath后浏览出现Forbidden

  配置svn服务器为“多库”后(“单库”、“多库”的概念见http://bbs.iusesvn.com/thread-157-1-1.html),我们想让浏览器显示父目录列表,这样,访问者可以直观的看到在版本库根目录下有哪些版本库。配置时加入“SVNListParentPath on”,比如我的配置文件:  

<Location /repos>
  DAV svn
  SVNListParentPath on
  #SVNPath e:/svn/repos1
  SVNParentPath e:/svn

  # 访问控制策略
  AuthzSVNAccessFile E:/usr/Apache2.2/bin/accesspolicy.conf

  # 首先采取匿名,如有必要采取认证
  Satisfy Any
  Require valid-user

  # 授权类型
  AuthType Basic
  # 认证时的提示信息,出现在对话框中
  AuthName "UserFile Auth"
  # 用户文件,存储帐号
  AuthUserFile E:/usr/Apache2.2/bin/passwd.conf
 </Location>

  这时,如果我们在浏览器中输入“http://svn服务器IP/repos/repos1”(假设存在“repos1”版本库),那么我们可以自己看到“repos”版本库的列表。但是如果我们想查看版本库的根目录,看看有哪些版本库,输入“http://svn服务器IP/repos”,回车。却出现:

  Forbidden

  You don't have permission to access /repos on this server.

  查看访问控制策略文件“accesspolicy.conf”,噢,原来没有给根目录加权限。添加权限,整个配置看起来如下:

  [groups]

  admin = indian

  test = test

  [/]

  * = r

  [repos1:/]

  * = r

  @admin = rw

  [repos2:/]

  @admin = rw

  @test = r

  * =

 

  再次输入“http://svn服务器IP/repos”,回车,还是出现禁止访问的信息。问题出在“<Location /repos>”,把它改成“<Location /repos/>”,即在后面加个斜线“/”,问题得到解决。
1
相关文章