Ubuntu 22.04 配置 SVN

📅 2026/7/10 22:02:35
Ubuntu 22.04 配置 SVN
适用场景在Ubuntu 22.04 Linux 系统中安装 SVN 客户端、配置内网主机名解析并使用账号密码访问 VisualSVN 仓库。一、配置流程本次配置的目标是在 Ubuntu 22.04 中安装 SVN 客户端并能够使用已有的 SVN 账号和密码访问公司或项目内网中的 SVN 仓库。用户当前遇到过三个典型问题第一Linux 无法解析 ”仓库” 主机名第二HTTPS 证书不是可信机构签发且证书主机名不匹配第三SVN 服务器返回禁止访问。本文使用的仓库示例https://仓库/svn/yyyyy/zzzzz账号示例为 xxxxx。密码属于敏感信息整体流程可以概括为安装 SVN 客户端 → 验证 svn 命令 → 在 Windows 查询 ”仓库” 对应 IP → 在 Ubuntu 配置 /etc/hosts → 验证 Linux 能 ping 通 ”仓库” → 测试 SVN 连接 → 处理证书提示 → 排查权限与路径 → checkout 下载仓库内容。目的命令行说明安装工具sudo apt updatesudo apt install -y subversion安装 SVN 客户端命令行工具。验证安装svn --versionwhich svn确认 svn 命令已经安装并能正常调用。配置解析sudo nano /etc/hosts手动添加 Hoson 与 IP 的映射关系。测试连接svn info https://”仓库”/svn/Robot/Speech_System --username xxxxx测试仓库路径、账号认证和服务器访问是否正常。下载仓库svn checkout https://”仓库”/svn/Robot/Speech_System Speech_System --username xxxxx将远程仓库下载成本地工作副本。二、安装SVN客户端Ubuntu 中使用 SVN 不需要搭建 SVN 服务器只需要安装 Subversion 客户端即可。客户端提供 svn info、svn ls、svn checkout、svn update、svn commit 等命令。sudo apt updatesudo apt install -y subversion安装完成后使用下面的命令确认 svn 是否安装成功。svn --versionwhich svn如果 which svn 输出 /usr/bin/svn说明系统已经能够找到 SVN 客户端程序。三、确认仓库地址与账号信息本次仓库地址为 https://xxxxxx账号为 xxxxxx。此处需要注意仓库地址https://xxxxSVN账号xxxxxxSVN密码不要写入文档不要发送给他人不要直接写在命令中安全提醒不要把密码直接写在 svn 命令中例如不要使用 --password 明文密码。否则密码可能保存在终端历史记录中。四、解决Linux无法解析Hoson的问题在 Windows 中可以 ping 通 “仓库网站”但 Ubuntu 中提示域名解析错误说明 Windows 能把 “仓库网站” 解析成 IP而 Ubuntu 不知道 “仓库网站” 对应哪个 IP。此问题通常发生在公司内网、局域网主机名、VisualSVN 服务器、双系统环境中。4.1在Windows中查询Hoson的IP先回到 Windows 系统打开 CMD 或 PowerShell执行下面命令。ping -4 “仓库”命令输出中一般会出现类似 Pinging “仓库” [192.168.1.100]其中方括号中的 192.168.1.100 就是 “仓库网站” 对应的 IPv4 地址。实际 IP 需要以你的 Windows 输出为准。如果 ping -4 “仓库网站” 没有显示 IPv4可以继续执行nslookup “仓库网站”4.2在Ubuntu中修改/etc/hosts进入 Ubuntu 后将 Windows 查询到的 IP 手动写入 /etc/hosts。该文件用于本机主机名解析优先级通常高于 DNS。sudo nano /etc/hosts在文件末尾添加一行注意把 192.168.1.100 替换为 Windows 上查询到的真实 IP。192.168.1.100 “仓库” “仓库”保存 nano 文件的方法按 Ctrl O回车保存再按 Ctrl X 退出。4.3在Ubuntu中验证主机名解析getent hosts “仓库”ping -c 4 “仓库”如果 getent hosts “仓库” 能输出 IP并且 ping -c 4 “仓库” 有 Reply 回复说明 Ubuntu 已经能正确解析并访问 “仓库”。如果 ping “仓库网站” 失败但 ping IP 成功说明 /etc/hosts 配置可能写错如果 ping IP 也失败说明 Ubuntu 当前网络没有进入公司内网可能需要连接公司网线、办公 Wi-Fi 或 VPN。五、测试SVN服务器连接当 Linux 能 ping 通 “仓库网站” 后继续测试 SVN 服务器是否可访问。建议先用 svn info 测试不要直接 checkout。svn info https“仓库网站” --username SVN账号名如果终端提示输入密码直接输入 SVN 密码即可。Linux 终端输入密码时不会显示星号或字符这是正常现象。六、处理HTTPS证书提示本次访问 SVN 时出现了证书提示证书不是由信任的权威机构颁发并且证书主机名称不匹配。显示的证书主机名称为 Tom_zs而访问地址是 “仓库网站”因此 SVN 客户端提示主机名不匹配。验证“https://“仓库网站”:443”的服务器证书时出错:- 此证书并不是由信任的权威机构颁发。- 证书的主机名称不匹配。证书信息:- 主机名称: Tom_zs- 发行者: Tom_zs(R)拒绝(t)暂时接受或(p)永远接受如果确认这是公司或项目内网的 VisualSVN 服务器可以输入 t 暂时接受或者输入 p 永久接受。t 只对当前连接有效p 会将该证书信任信息保存到本机 SVN 配置中后续不再反复询问。解释接受证书只解决 HTTPS 信任问题不能解决账号权限、路径错误或密码错误。证书通过后仍然可能出现禁止访问。七、理解“禁止访问”的含义本次你在 Ubuntu 中执行 svn info 后已经能连接到 VisualSVN Server并且进入了认证阶段。最终报错为 E175013 禁止访问这说明网络和主机名解析已经基本通过真正的问题变成了仓库路径、账号权限或认证缓存。认证领域: https://“仓库网站”:443 VisualSVN Server“xxxxxx”的密码: **********svn: E170013: Unable to connect to a repository at URL https://“仓库网站”svn: E175013: 禁止访问 /svn/yyyyy/zzzzz这类报错最常见的原因有四个第一账号 xxxxx 没有该仓库或该目录的读取权限第二仓库路径写错第三路径大小写不一致第四本地 SVN 缓存了错误的认证信息。八、排查权限、路径与认证缓存8.1清除SVN本地认证缓存如果之前输错过密码建议先清除本地认证缓存再重新测试。rm -rf ~/.subversion/auth清除后使用 --no-auth-cache 重新输入账号密码避免再次保存错误认证。svn info https://“仓库网站” --username xxxxx --no-auth-cache8.2分级测试SVN路径为了判断是 yyyyy 仓库没有权限还是 zzzzz 子目录没有权限可以逐级执行 svn ls。svn ls https://”仓库”/svn --username xxxxx --no-auth-cachesvn ls https://”仓库”/svn/yyyyy --username xxxxx --no-auth-cachesvn ls https://”仓库”/svn/yyyyy/zzzzz --username xxxxx --no-auth-cachesvn ls https://”仓库”/svn/yyyyy/zzzzz/trunk --username xxxxx --no-auth-cache现象判断与处理svn ls https://”仓库”/svn 成功说明能访问 SVN 根入口但根目录能否列出取决于服务器设置。svn ls https://”仓库”/svn/yyyyy 成功说明 yyyyy 仓库路径基本正确账号至少能访问 yyyyy 仓库某些内容。yyyyy 成功但 zzzzz 禁止访问说明账号可能没有 zzzzz 目录权限或者该目录不存在/大小写错误。yyyyy 就禁止访问说明账号没有 yyyyy 仓库权限或者 yyyyy 不是正确仓库名。加 /trunk 后成功说明实际代码在 trunk 目录应 checkout trunk。8.3需要向SVN管理员确认的信息如果执行到这里仍然是禁止访问需要向 SVN 管理员或项目负责人确认以下信息。账号 xxxxx 是否已经开通 SVN 权限。账号 xxxxx 是否对 yyyyy 仓库具有 Read 读取权限。账号 xxxxx 是否对 /zzzzz 目录具有 Read 读取权限。完整的 SVN Checkout URL 是否确实为 https://”仓库”/svn/yyyyy/zzzzz。代码是否实际放在 trunk、branches 或 tags 中例如 https://”仓库”/svn/yyyyy/zzzzz/trunk。路径大小写是否完全一致例如 zzzzz、zzzzz 不是同一个路径。九、下载SVN仓库内容当 svn info 或 svn ls 已经确认能访问仓库后再进行 checkout。建议将 SVN 项目统一放在 ~/SVNProjects 目录下方便管理。mkdir -p ~/SVNProjectscd ~/SVNProjects如果代码就在 zzzzz 目录下执行svn checkout https://”仓库”/svn/yyyyy/zzzzz zzzzz --username xxxxx如果管理员确认代码在 trunk 目录下执行svn checkout https://”仓库”/svn/yyyyy/zzzzz/trunk zzzzz --username xxxxxcheckout 成功后终端最后会显示类似 Checked out revision xxxx。此时本地项目路径一般为 ~/SVNProjects/zzzzz。十、下载完成后的常用SVN命令目的命令行说明查看仓库信息svn info在工作副本目录中查看当前 URL、版本号、仓库根地址等信息。查看本地改动svn statussvn st无输出表示本地没有修改M 表示修改A 表示新增? 表示未纳入版本控制。更新代码svn updatesvn up从服务器拉取最新版本。查看差异svn diff 文件名查看本地修改内容与服务器版本的差异。添加文件svn add 文件名或目录名将新文件加入版本控制。提交修改svn commit -m 提交说明svn ci -m 提交说明将本地修改提交到服务器需要账号具有写权限。撤销本地修改svn revert 文件名撤销某个文件的本地修改。清理工作副本svn cleanup当 SVN 操作异常中断、被锁定时使用。查看日志svn log -l 5查看最近 5 次提交记录。