SVN客户端下载与安装
Windows系统推荐使用TortoiseSVN,该客户端集成资源管理器右键菜单:
- 下载后运行安装包,选择"Full"完全安装模式
- 安装路径避免包含中文和空格
- 重启后右键菜单可见SVN操作选项
Mac环境开发建议同时安装命令行和图形界面:
# 安装命令行工具
brew install subversion
# 安装Cornerstone图形客户端
brew install --cask cornerstone
Linux服务器环境建议编译安装最新版:
wget https://downloads.apache.org/subversion/subversion-1.14.2.tar.gz
tar zxvf subversion-1.14.2.tar.gz
cd subversion-1.14.2
./configure
make
make install
项目检出操作
带认证的仓库检出示例:
svn checkout --username devuser --password 123456 \
svn://192.168.1.100/repos/online-store/trunk \
./local-folder
指定版本号检出历史版本:
svn checkout -r 128 http://svn.example.com/project/trunk
日常更新与提交
提交时忽略特定文件:
svn propset svn:ignore "*.log" logs/
svn commit -m "忽略日志文件"
批量添加新文件:
svn add src/*.java --force
svn commit -m "批量添加Java源文件"
版本控制操作
比较两个历史版本差异:
svn diff -r 120:125 http://svn.example.com/project/trunk/src/main.c
查看特定文件的修改历史:
svn log -v -l 5 src/main.py # 查看最近5次提交
分支与合并
创建并切换至分支:
svn copy ^/trunk ^/branches/feature-login -m "创建登录功能分支"
svn switch ^/branches/feature-login
合并指定版本范围变更:
svn merge -r 150:200 ^/branches/feature-payment
高级操作示例
迁移SVN仓库:
svnadmin dump /path/to/repos > repos.dump
svnadmin create /new/repos/path
svnadmin load /new/repos/path < repos.dump
设置提交钩子脚本:
# 在仓库hooks目录创建pre-commit文件
#!/bin/sh
REPOS="$1"
TXN="$2"
SVNLOOK=/usr/bin/svnlook
$SVNLOOK log -t "$TXN" "$REPOS" | \
grep "[a-zA-Z0-9]" >/dev/null || \
{ echo "日志消息不能为空" >&2; exit 1; }
exit 0
故障排查技巧
SVN常见故障排查与修复示例
工作副本损坏修复
当工作副本出现锁定或损坏时,清理命令可以移除临时文件和非版本控制的文件:
svn cleanup --remove-unversioned
树冲突处理
树冲突(目录结构冲突)可通过指定接受本地版本解决,递归处理当前目录下所有文件:
svn resolve --accept working ./*
服务器连接验证
获取仓库根URL以验证服务器连接状态和地址配置:
svn info --show-item repos-root-url
版本回退操作
撤销本地未提交的修改(单个文件或整个目录):
svn revert path/to/file
svn revert . -R
合并冲突解决
手动编辑冲突文件后标记为已解决:
svn resolve --accept mine-full conflict_file.txt
缺失文件恢复
从版本库恢复工作副本中误删的文件:
svn update path/to/missing_file
锁定文件强制释放
管理员可释放被异常锁定的文件:
svn unlock --force path/to/locked_file
版本库检查
检查版本库完整性(需管理员权限):
svnadmin verify /path/to/repository
代理设置查看
检查当前SVN客户端配置的代理设置:
svn info --show-item config
日志过滤查询
按日期范围检索提交历史:
svn log -r {2023-01-01}:{2023-12-31}
每个命令执行后建议使用svn status
检查状态变更。复杂场景可结合--verbose
参数获取详细输出信息。修复工作副本:
svn cleanup --remove-unversioned
解决树冲突:
svn resolve --accept working ./*
查看服务器信息:
svn info --show-item repos-root-url