在集中式版本控制系统中,Subversion(简称 SVN)凭借其清晰的目录权限模型、原子提交和广泛的 IDE 集成,至今仍在许多企业和团队中扮演重要角色。如果你正打算搭建一套 SVN 服务端,并希望从零完成第一次代码提交,本文将分别以 Windows Server 和 Linux 为例,手把手带你走完整个流程。
一、为什么选择 SVN
在 Git 大行其道的今天,SVN 依然有其不可替代的场景:
- 目录级权限控制:可以精确到某个子目录的读/写权限,适合外包或分层管理的团队。
- 单一中央仓库:所有历史版本集中存储,管理员备份和审计更直观。
- 学习曲线平缓:对于从 VSS、CVS 迁移过来的团队,SVN 的概念更易接受。
- 大文件与二进制文件友好:不需要像 Git 那样依赖 LFS 扩展。
明确需求后,我们进入正题。
二、Windows 上搭建 SVN 服务端
1. 安装 VisualSVN Server
Windows 下最省心的方案是 VisualSVN Server,它集成了 Apache、Subversion 和图形化管理界面。
- 访问 VisualSVN 官网下载免费版安装包。
- 运行安装程序,选择 Standard Edition 即可满足大部分需求。
- 安装过程中设置:
- 安装路径(建议非系统盘,如
D:\VisualSVN) - 仓库根目录(如
D:\Repositories) - 服务端口(默认 443 或 8443)
- 认证方式(推荐 Subversion 身份验证,即账号密码由 SVN 自己管理)
- 安装路径(建议非系统盘,如
安装完成后,打开 VisualSVN Server Manager。
2. 创建仓库与用户
- 右键 Repositories → Create New Repository。
- 输入仓库名称,例如
myproject。 - 选择仓库类型:Regular FSFS repository(默认即可)。
- 设置初始权限结构,通常勾选 Create default structure(生成
trunk、branches、tags)。
接着右键 Users → Create User,添加一个开发账号,例如 dev1,设置密码。
最后右键仓库 myproject → Properties → Security,为 dev1 授予 Read/Write 权限。
3. 获取仓库 URL
在仓库上右键 → Copy URL to Clipboard,你会得到类似:
https://svn.example.com/svn/myproject
如果是本机测试,可能是 https://localhost/svn/myproject。
三、Linux 上搭建 SVN 服务端
Linux 下我们使用官方 subversion 配合 svnserve,轻量且可控。
1. 安装软件包
以 CentOS/RHEL 为例:
sudo yum install -y subversion
Ubuntu/Debian:
sudo apt update
sudo apt install -y subversion
验证安装:
svnserve --version
2. 创建仓库
sudo mkdir -p /var/svn
sudo svnadmin create /var/svn/myproject
此时 /var/svn/myproject 下会生成 conf、db、hooks 等目录。
3. 配置访问权限
编辑 conf/svnserve.conf,取消以下行的注释并修改:
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = MyProject Repository
编辑 conf/passwd 添加用户:
[users]
dev1 = password123
admin = adminpass
编辑 conf/authz 设置权限:
[groups]
developers = dev1
[/]
admin = rw
@developers = rw
* =
4. 启动 svnserve 服务
sudo svnserve -d -r /var/svn
-d 表示守护进程,-r 指定仓库根目录。检查端口:
ss -tlnp | grep 3690
如需开机自启,可创建 systemd 服务文件 /etc/systemd/system/svnserve.service:
[Unit]
Description=Subversion Server
After=network.target
[Service]
Type=forking
ExecStart=/usr/bin/svnserve -d -r /var/svn
ExecStop=/usr/bin/killall svnserve
Restart=on-failure
[Install]
WantedBy=multi-user.target
然后执行:
sudo systemctl daemon-reload
sudo systemctl enable --now svnserve
四、首次代码提交(Windows 与 Linux 通用)
无论服务端是 Windows 还是 Linux,客户端操作完全一致。以下以命令行客户端为例。
1. 检出仓库
svn checkout https://svn.example.com/svn/myproject/trunk myproject
# 或 Linux 下使用 svn:// 协议
svn checkout svn://192.168.1.100/myproject/trunk myproject
2. 添加文件
进入工作副本目录:
cd myproject
echo "# My Project" > README.md
mkdir src
echo "print('hello')" > src/main.py
将新文件纳入版本控制:
svn add README.md src
3. 提交到服务端
svn commit -m "初始提交:添加 README 和 main.py"
如果设置了账号密码,会提示输入。提交成功后输出类似:
Adding README.md
Adding src
Adding src/main.py
Transmitting file data ...
Committed revision 1.
至此,第一次代码提交完成。你可以在服务端用 svn log 查看历史,或在 VisualSVN Manager 中刷新仓库查看版本树。
五、常见问题与建议
- 端口与防火墙:Windows 下注意放行 443/8443;Linux 下放行 3690 或使用
svn://协议。 - 权限继承:
authz中父目录权限会向下继承,子目录可覆盖,建议从根目录开始规划。 - 备份策略:定期使用
svnadmin hotcopy备份仓库,避免直接复制db目录。 - 迁移到 Git:若未来计划迁移,可保留 SVN 作为只读归档,使用
git svn clone逐步过渡。
SVN 的搭建并不复杂,关键在于权限模型的设计和仓库结构的规划。希望本文能帮助你在 Windows 或 Linux 上顺利跑通第一个版本库,并完成具有纪念意义的第一次提交。
未经允许不得转载:任鹏个人博客 » 如何在 Windows 与 Linux 上搭建 SVN 服务端并完成首次代码提交


朋友圈点赞图在线生成源码