如何为Subversion仓库配置svnserve(svn://协议)以解决Fisheye超时问题
配置共享驱动器(NASH Drive)上SVN仓库的svnserve步骤
我来一步步帮你搞定这个配置,解决Fisheye的超时问题:
1. 前期准备
- 确认你的SVN仓库在共享驱动器上的路径:
- Windows环境下通常是
\\NASH-Drive\svn-repos\your-repo-name - Linux/macOS环境下如果已经挂载共享盘,路径类似
/mnt/nash-drive/svn-repos/your-repo-name
- Windows环境下通常是
- 检查svnserve是否安装:打开终端/命令提示符,输入
svnserve --version,能返回版本信息就说明没问题。
2. 配置仓库的svnserve.conf
进入仓库的conf目录(比如 \\NASH-Drive\svn-repos\your-repo-name\conf),编辑svnserve.conf文件,注意配置行必须顶格,不能有前置空格:
- 取消
anon-access = read的注释(如果不需要匿名访问,可设为none) - 取消
auth-access = write的注释 - 取消
password-db = passwd的注释(如果需要用户认证) - 取消
realm = My First Repository的注释,改成你的专属域,比如realm = NASH Drive SVN Repository
3. 可选:设置用户与权限(如果需要认证)
- 编辑同目录下的
passwd文件,在[users]区块添加用户:[users] alice = alice123 bob = bob456 - 若需更精细的路径权限控制,编辑
authz文件,示例:[groups] devs = alice,bob [/projectA] @devs = rw * = r
4. 启动svnserve服务
Windows系统
- 临时启动(重启后失效):打开命令提示符,运行:
svnserve -d -r \\NASH-Drive\svn-repos-d表示以守护进程模式运行,-r指定仓库根目录(这样所有子仓库都能通过svn://访问) - 设置开机自启服务:
注意sc create SVNServer binPath= "C:\Program Files\Subversion\bin\svnserve.exe -d -r \\NASH-Drive\svn-repos" DisplayName= "NASH Drive SVN Service" start= autobinPath=后面必须加空格,路径要和你的svnserve实际安装路径匹配。创建后可以在服务管理器里启动它。
Linux/macOS系统
- 临时启动:
svnserve -d -r /mnt/nash-drive/svn-repos - 设置开机自启(以systemd为例):
- 创建服务文件
/etc/systemd/system/svnserve.service,内容如下:[Unit] Description=SVN Server for NASH Drive Repos After=network.target [Service] Type=forking ExecStart=/usr/bin/svnserve -d -r /mnt/nash-drive/svn-repos Restart=always User=svn # 确保这个用户有共享盘的访问权限 [Install] WantedBy=multi-user.target - 重载systemd并启用服务:
sudo systemctl daemon-reload sudo systemctl enable --now svnserve
- 创建服务文件
5. 测试svn://连接
用SVN客户端测试连接是否正常,比如:
svn info svn://your-server-ip/your-repo-name
如果能返回仓库的详细信息,说明配置成功。
6. 配置Fisheye使用svn://协议
在Fisheye的仓库管理界面,添加新仓库:
- 选择Subversion类型
- 仓库URL填写
svn://your-server-ip/your-repo-name - 如果设置了认证,输入对应的用户名和密码
- 测试连接通过后,保存配置并启动索引,应该能解决之前的超时问题
关键注意事项
- 确保svnserve进程有访问NASH Drive共享目录的权限:Windows服务要使用有权限的账户运行,Linux要确保svnserve的运行用户能读写挂载的共享盘。
- 如果共享驱动器路径有特殊字符,尽量避免,或者用引号包裹路径。
内容的提问来源于stack exchange,提问作者Gangadhar
相关产品推荐
相关产品推荐

