如何在 Windows 与 Linux 上搭建 SVN 服务端并完成首次代码提交

在集中式版本控制系统中,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. 创建仓库与用户

  • 右键 RepositoriesCreate New Repository
  • 输入仓库名称,例如 myproject
  • 选择仓库类型:Regular FSFS repository(默认即可)。
  • 设置初始权限结构,通常勾选 Create default structure(生成 trunkbranchestags)。

接着右键 UsersCreate User,添加一个开发账号,例如 dev1,设置密码。

最后右键仓库 myprojectPropertiesSecurity,为 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 下会生成 confdbhooks 等目录。

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 服务端并完成首次代码提交

赞 (0) 打赏

评论 0

取消
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏