TortoiseSVN 本身是一个纯客户端工具,它只负责在你的 Windows 桌面电脑上与 Subversion 服务器进行交互,比如检出、提交、查看日志等,它没有服务器端的功能。

TortoiseSVN 的服务器端是什么呢?答案是 Subversion 服务器软件,TortoiseSVN 客户端需要连接到运行了 Subversion 服务的服务器,才能进行版本控制操作。
下面我将详细介绍主流的 Subversion 服务器端软件、如何搭建以及最佳实践。
主流的 Subversion 服务器端软件
Subversion 服务器端软件通常被称为 "SVN 服务器" 或 "SVN Repository (仓库)",主要有以下几种实现方式:
Apache HTTP Server + mod_dav_svn (最经典、最强大)
这是 Subversion 官方推荐的、功能最全面的部署方式。

- 工作原理: 使用 Apache Web 服务器,并通过一个名为
mod_dav_svn的模块来提供 Subversion 的网络协议访问。 - 优点:
- 功能强大: 支持 HTTP/HTTPS 协议,可以通过互联网安全访问。
- 精细的权限控制: 可以利用 Apache 的用户认证(如 Basic Auth, Digest Auth)和目录权限(
htaccess)来精确控制每个用户对不同仓库或不同目录的读写权限。 - 成熟稳定: 经过了长时间和大规模项目的检验,非常稳定可靠。
- 集成度高: 可以和 Apache 的其他功能(如日志、负载均衡等)无缝集成。
- 缺点:
- 配置相对复杂: 需要同时配置 Apache 和 Subversion,步骤较多。
- 资源消耗: Apache 本身是一个功能全面的 Web 服务器,相比其他方案资源占用稍高。
- 适用场景: 企业级应用、需要严格权限控制、需要通过公网访问的任何项目。
svnserve (独立、轻量级)
这是 Subversion 自带的一个轻量级、独立的服务器程序。
- 工作原理: 一个单独的守护进程,通过自定义的 SVN 协议(默认端口 3690)提供服务。
- 优点:
- 简单易用: 安装和配置非常简单,只需要很少的步骤。
- 资源占用低: 专注于提供 SVN 服务,非常轻量。
- 启动快速: 启动和停止都非常快。
- 缺点:
- 功能有限: 不支持 HTTPS,权限控制相对简单(主要通过仓库的
conf/svnserve.conf文件配置)。 - 安全性: 在公网上使用 SVN 协议(非加密)不安全,容易受到中间人攻击。
- 功能有限: 不支持 HTTPS,权限控制相对简单(主要通过仓库的
- 适用场景: 小型团队、本地局域网 内部使用、对安全性要求不高的项目、快速搭建测试环境。
VisualSVN Server (图形化,推荐给 Windows 用户)
这是一个专门为 Windows 平台设计的、集成了 Apache 和 Subversion 的服务器套件,它极大地简化了 Subversion 服务器的安装和配置过程。
- 工作原理: 在后台,它依然是使用 Apache + mod_dav_svn,但它通过一个图形化界面让你管理仓库、用户和权限,无需手动编辑配置文件。
- 优点:
- 安装配置极其简单: 一路“下一步”即可完成安装和初始配置。
- 图形化管理界面: 可以直观地创建仓库、管理用户和用户组、设置权限。
- 与 Windows 集成: 可以方便地使用 Windows 的 Active Directory 用户进行认证。
- 稳定可靠: 基于官方的 Subversion 和 Apache,稳定有保障。
- 缺点:
- 平台限制: 仅限 Windows 系统。
- 商业软件: 社区版免费,但企业版(功能更强,如支持多仓库管理、更高级的权限等)需要付费。
- 适用场景: 绝大多数 Windows 用户的最佳选择,无论是个人开发者、小型团队还是中型企业,使用 VisualSVN Server 都能快速搭建起一个稳定易用的 SVN 服务器。
如何选择服务器端?
| 特性 | Apache + mod_dav_svn | svnserve (独立) | VisualSVN Server (Windows) |
|---|---|---|---|
| 易用性 | 复杂 | 简单 | 非常简单 |
| 功能 | 最全面 | 基础 | 全面,图形化 |
| 权限控制 | 非常精细 | 基础 | 非常精细,图形化 |
| 安全性 | 高 (支持HTTPS) | 低 (仅SVN协议) | 高 (支持HTTPS) |
| 平台 | 跨平台 | 跨平台 | 仅 Windows |
| 适用场景 | 企业级、公网访问 | 小型局域网、快速测试 | Windows环境下的首选 |
总结建议:
- 如果你是 Windows 用户,且希望快速、省心地搭建一个功能完善的 SVN 服务器:首选 VisualSVN Server,它能让你完全避开命令行和复杂配置的烦恼。
- 如果你需要部署在 Linux/Unix 系统上,或者需要极高的定制化和安全性:选择 Apache + mod_dav_svn。
- 如果你只是想在本地局域网内和朋友或小团队快速共享一个代码仓库,不追求复杂功能:可以使用 svnserve,它足够轻量且能满足基本需求。
以 VisualSVN Server 为例,搭建服务器端(Windows)
这是最推荐给 Windows 用户的方式,步骤非常简单。

第一步:下载和安装
- 访问 VisualSVN Server 官方网站: https://www.visualsvn.com/server/
- 下载 "VisualSVN Server" 的最新安装包(有免费版和付费版,免费版功能已足够强大)。
- 运行安装程序,按照向导进行安装,大部分选项保持默认即可。
- Repository Location: 选择存放仓库数据的路径。
- Administrative Users: 设置管理员用户名和密码,这个用户拥有所有仓库的最高权限。
第二步:创建仓库
- 安装完成后,在 Windows 的“开始”菜单中找到 "VisualSVN Server" -> "VisualSVN Server Manager" 并打开它。
- 在左侧的 "Repositories" 窗格中,右键点击,选择 "Create New Repository"。
- 给你的仓库起一个名字(
MyProject),选择仓库布局(Create default 'trunk', 'branches', 'tags' structure是强烈推荐的 Subversion 最佳实践)。 - 点击 "OK",仓库就创建成功了。
第三步:创建用户和设置权限
- 在左侧的 "Users" 窗格中,右键点击,选择 "Create New User"。
- 输入用户名和密码,点击 "OK"。
- 你需要为这个用户分配权限,在左侧的 "Repositories" 窗格中,右键点击你刚刚创建的
MyProject仓库,选择 "Properties"。 - 切换到 "Security" 选项卡。
- 点击 "Add..." 按钮,输入你创建的用户名,然后点击 "OK"。
- 在下方的权限列表中,勾选该用户需要的权限。
Read: 只读权限。Read/Write: 读写权限(开发者通常需要这个)。Revise: 允许修改属性和创建分支/标签。Create/Destroy Folder: 允许创建和删除文件夹。Admin: 管理员权限(通常只给仓库管理员)。
- 点击 "Apply" 和 "OK" 保存设置。
第四步:客户端连接
你可以在任何一台安装了 TortoiseSVN 的电脑上连接这个服务器了。
- 在你的电脑上,右键点击一个文件夹,选择 "SVN Checkout..."。
- 在 "URL of repository" 输入框中,输入仓库的地址,格式如下:
- VisualSVN Server 使用的是默认端口
8443(HTTPS):https://<你的服务器IP或主机名>:8443/svn/MyProject - 如果使用 HTTP (不安全,不推荐):
http://<你的服务器IP或主机名>:8080/svn/MyProject(默认端口可能是 80)
- VisualSVN Server 使用的是默认端口
- 点击 "OK",系统会弹出认证窗口,输入你创建的用户名和密码即可完成检出。
服务器端最佳实践
- 定期备份:这是最重要的!仓库就是你的代码历史,一旦损坏,后果不堪设想,请制定并执行定期的备份计划,VisualSVN Server 提供了 "Hot Backup" 功能,可以在服务器运行时创建仓库的完整备份。
- 使用
trunk,branches,tags结构:这是 Subversion 的标准目录结构,能极大地规范团队的开发流程。trunk: 主干代码,始终处于可开发状态。branches: 分支,用于开发新功能或修复 Bug。tags: 标签,用于标记重要的版本发布点(如 v1.0, v2.0)。
- 严格控制权限:遵循最小权限原则,只给用户完成其工作所必需的最小权限,普通开发者通常只需要对
trunk和branches有读写权限,对tags只有读权限。 - 保持服务器版本更新:及时更新 Subversion 服务器软件,以获得最新的功能和安全补丁。
- 编写提交日志:强制要求所有开发者在提交代码时,写清晰、有意义的提交日志,这能极大地方便后续的代码审查和问题追踪。
希望这份详细的指南能帮助你全面了解 TortoiseSVN 的服务器端!
