当前位置: 首页 > news >正文

SVN 常用命令详解

SVN(Subversion)是集中式版本控制系统,在芯片设计/验证团队中广泛使用。以下按使用场景分类详解常用命令。


一、基础概念速览

概念说明
Repository(仓库)服务器端集中存储所有版本历史
Working Copy(工作副本)本地检出的工作目录
Revision(版本号)全局递增的整数版本号(r1, r2, ...)
HEAD仓库中最新版本
BASE工作副本对应的版本
trunk/branches/tags主干/分支/标签(约定目录结构)

二、检出与初始化

1. checkout(检出)—— 首次获取代码

# 检出整个仓库 svn checkout <url> svn co <url> # co 是简写 # 检出到指定目录 svn co <url> my_project # 检出指定版本 svn co -r 100 <url> # 只检出某个子目录(SVN 的优势) svn co https://repo/project/rtl/

2. import(导入)—— 把本地目录首次上传到仓库

svn import ./local_dir <url> -m "initial import"

三、查看状态与信息

1. status(查看本地状态)★ 最常用

svn status # 查看工作副本改动 svn st # 简写 svn status -u # 同时显示服务器更新(带 * 标记) svn status -q # 只显示有改动的文件

状态码含义

符号含义
MModified,已修改
AAdded,已添加(待提交)
DDeleted,已删除(待提交)
?未纳入版本控制
!文件丢失(被非 svn 方式删除)
CConflict,冲突
*服务器有更新(配合 -u)
GmerGed,合并成功

2. info(查看版本信息)

svn info # 显示 URL、版本号、作者等 svn info <file>

3. log(查看提交历史)★

svn log # 查看历史记录 svn log -l 10 # 只看最近 10 条 svn log -v # 显示每次改动的文件列表 svn log -r 100:200 # 查看版本 100~200 svn log <file> # 查看某文件的历史 svn log -r 100 -v # 查看版本100的详细改动

4. diff(查看差异)★

svn diff # 本地改动 vs BASE svn diff <file> # 某文件的改动 svn diff -r 100:200 # 版本100与200的差异 svn diff -r 100 <file> # 工作副本与版本100的差异 svn diff -r PREV:HEAD <file> # 上一版与最新版差异

四、更新与提交(日常核心)

1. update(更新)★ 最常用

svn update # 更新到最新版本(HEAD) svn up # 简写 svn up -r 100 # 更新到指定版本 svn up <file> # 只更新某文件

好习惯:每天开始工作前先svn up,提交前也先svn up,减少冲突。

2. commit(提交)★ 最常用

svn commit -m "提交说明" # 提交所有改动 svn ci -m "fix bug" # ci 是简写 svn commit <file> -m "说明" # 只提交某文件 svn commit dir1 file2 -m "说明" # 提交多个指定项

重要-m提交说明是强制要求(团队规范),写清楚改了什么。


五、增删改与移动

1. add(添加新文件到版本控制)

svn add <file> # 添加单个文件 svn add <dir> # 添加目录(含内容) svn add --force . # 添加当前目录所有未跟踪文件 svn add *.v # 添加所有 .v 文件

新建文件后必须svn add,再commit才会进仓库。

2. delete(删除)

svn delete <file> # 删除文件(标记删除) svn del <file> # 简写 svn rm <file> # 同义 svn delete <url> -m "说明" # 直接删除仓库中的文件

3. copy(复制,常用于建分支/标签)

svn copy <src> <dst> -m "说明" svn cp trunk branches/dev -m "create dev branch"

4. move / rename(移动或重命名)

svn move <src> <dst> # 移动/重命名(保留历史) svn mv old.v new.v # 重命名文件

注意:删除、移动、重命名都要用 svn 命令,不要直接用系统命令(rm/mv),否则丢失版本追踪。


六、撤销与恢复

1. revert(撤销本地改动)★ 常用

svn revert <file> # 撤销单个文件的本地修改 svn revert -R . # 递归撤销当前目录所有改动 svn revert --depth=infinity . # 同上

⚠️ revert 会丢弃所有未提交改动,恢复到 BASE 版本,不可逆,谨慎使用。

2. 恢复到历史版本

# 方法1:反向合并撤销某次提交 svn merge -r 200:199 . # 撤销版本200的改动 svn commit -m "revert r200" # 方法2:把文件恢复到旧版本 svn up -r 100 <file> # 临时回退某文件 svn merge -r HEAD:100 <file> # 把文件内容恢复到版本100

3. cleanup(清理锁定/中断状态)★ 实用

svn cleanup # 清理工作副本(解决"locked"错误)

当 SVN 操作中断导致工作副本被锁定(提示 "working copy locked")时用此命令修复。


七、冲突处理

当 update/merge 出现冲突(状态C):

svn update # 出现冲突时会生成几个文件: # file.mine 你的版本 # file.rOLD 旧版本 # file.rNEW 服务器新版本 # file 含冲突标记的文件

解决步骤

# 1. 手动编辑 file,解决冲突标记 (<<<<<<< ======= >>>>>>>) # 2. 标记冲突已解决 svn resolve --accept working <file> # 或 svn resolved <file> # 3. 提交 svn commit -m "resolve conflict"

冲突时的交互选项(update 时会提示):

选项含义
(p) postpone推迟,稍后手动解决
(mf) mine-full全部用我的版本
(tf) theirs-full全部用服务器版本
(e) edit手动编辑
(s) show all显示所有选项

八、分支与标签(trunk/branches/tags)

1. 标准目录结构

repo/ ├── trunk/ # 主干(主开发线) ├── branches/ # 分支(特性开发、bug 修复) └── tags/ # 标签(发布版本快照)

2. 创建分支

svn copy https://repo/trunk \ https://repo/branches/feature_x \ -m "create feature_x branch"

3. 创建标签(如流片版本)

svn copy https://repo/trunk \ https://repo/tags/v1.0_tapeout \ -m "tag v1.0 tapeout"

4. 分支合并回主干

# 切换到 trunk 工作副本 svn merge https://repo/branches/feature_x svn commit -m "merge feature_x to trunk" # 合并指定版本范围 svn merge -r 100:150 https://repo/branches/feature_x

5. switch(切换工作副本到其他分支)

svn switch https://repo/branches/feature_x svn sw https://repo/trunk # 切回主干

九、锁定机制(处理二进制文件)★ 芯片团队常用

二进制文件(库、版图、文档)无法合并,需独占锁定:

svn lock <file> -m "editing" # 锁定文件 svn unlock <file> # 解锁 svn unlock --force <file> # 强制解锁(解他人的锁) svn status # 带 K 表示自己持有锁 svn info <file> # 查看锁信息
锁状态码含义
K我持有锁
O他人持有锁
T锁被偷(被别人 break)
B锁失效(broken)

十、其他实用命令

1. list(列出仓库内容,不下载)

svn list <url> # 列出目录内容 svn ls <url> # 简写 svn ls -v <url> # 详细信息 svn ls -R <url> # 递归列出

2. cat(查看仓库中文件内容)

svn cat <url> # 查看仓库文件内容 svn cat -r 100 <file> # 查看某版本的文件内容

3. blame / praise(逐行查看作者)★ 调试找责任人

svn blame <file> # 显示每行由谁、哪个版本修改 svn praise <file> # 同义 svn annotate <file> # 同义

4. propset / propget(属性操作)

# 设置忽略文件(类似 .gitignore) svn propset svn:ignore "*.log" . svn propset svn:ignore -F ignore_list . # 从文件读取忽略列表 svn propget svn:ignore . # 查看忽略属性 svn propedit svn:ignore . # 编辑忽略属性 # 设置可执行属性 svn propset svn:executable ON script.sh

5. export(导出无版本信息的纯净副本)

svn export <url> <dir> # 导出干净副本(不含 .svn) svn export -r 100 <url> <dir> # 导出指定版本

用于发布/打包,不含.svn隐藏目录。


十一、常用命令速查表

命令简写功能
svn checkoutco检出
svn updateup更新
svn commitci提交
svn statusst查看状态
svn add添加
svn deletedel/rm删除
svn revert撤销改动
svn diffdi查看差异
svn log查看历史
svn info版本信息
svn listls列出内容
svn copycp复制/建分支
svn movemv移动/重命名
svn merge合并
svn switchsw切换分支
svn cleanup清理锁定
svn lock/unlock加锁/解锁
svn blame逐行作者
svn resolve解决冲突

十二、典型工作流程

日常开发流程

# 1. 早上更新到最新 svn up # 2. 修改代码、添加新文件 svn add new_file.v # 3. 查看自己的改动 svn st svn diff # 4. 提交前再次更新(避免冲突) svn up # 5. 解决可能的冲突后提交 svn ci -m "add feature xxx"

二进制文件编辑流程(芯片团队)

svn up svn lock design.gds -m "editing layout" # 先锁定 # ... 编辑文件 ... svn ci design.gds -m "update layout" # 提交自动解锁

十三、实用技巧与注意事项

技巧说明
提交前先 update减少冲突,养成习惯
提交信息要清晰团队协作和追溯的关键
小步提交每个逻辑改动单独提交,便于回退
不提交临时文件用 svn:ignore 忽略 log/编译产物
二进制文件加锁防止多人同时改无法合并
遇到锁定用 cleanup"locked" 错误的万能解法
不要手动删 .svn会破坏工作副本
删除/移动用 svn 命令不要用系统 rm/mv
流片打 tag重要里程碑用 tag 固化版本

十四、常见问题排查

问题解决方法
working copy lockedsvn cleanup
文件状态 !(丢失)svn revert <file> 恢复
冲突 C手动解决后 svn resolve --accept working
想忽略某些文件svn propset svn:ignore
误提交想撤销svn merge -r N:N-1 . 反向合并
不小心 revert 了无法恢复(未提交改动已丢失,谨慎)

总结

日常最高频 5 条命令

svn up # 更新 svn st # 看状态 svn diff # 看改动 svn ci -m "..." # 提交 svn add # 加新文件

芯片团队特色:善用svn lock(二进制文件锁定)、svn co <子目录>(部分检出)、svn copy ... tags/(流片版本固化),这正是 SVN 在 IC 行业受青睐的核心能力。

http://www.jsqmd.com/news/1033276/

相关文章:

  • kkFileView:企业级文件在线预览技术方案,实现跨格式文档统一访问与管理
  • Jemeter
  • 基于FME的等高线赋值正确性检查
  • 2026年杭州GEO优化重磅盘点!国内头部生成式引擎优化服务商权威实力排名与选型全解析 - 936品牌测评网
  • Windows启动失败修复指南:手动重建BCD与引导项解决“无法修复”问题
  • okbiye AI PPT 生成器实测解析:四步零门槛打造答辩汇报幻灯片,告别熬夜排版难题
  • 2026 年 6 月最新!浙江 GEO 优化公司哪家靠谱?2026 本地服务商实力对比全解析 - 936品牌测评网
  • 2026年6月最新!杭州本地GEO优化推荐:这几家做生成式引擎优化更专业 - 936品牌测评网
  • 做德国出口生意必看风险提示汇总
  • 如何让AI Agent真正接管批量IT运维?贝锐向日葵企业CLI解析
  • 2026年当下,江苏地区值得关注的徐州爵士舞艺术中心深度解析 - 品牌鉴赏官2026
  • 2026年近期重庆GEO平台哪个好?与选型指南 - 品牌鉴赏官2026
  • 2026年绍兴代理记账公司推荐:5家专业财税服务商深度测评 - 本地品牌推荐
  • S曲线规划停止运动
  • 3种Ant Design紧凑模式实战指南:从空间优化到极致用户体验
  • 项目急用材料怎么办?这几家Nitronic60现货充足且支持快速发货 - 品牌2026
  • 多模型底层调度实测拆解:智能择优匹配全品类开发任务
  • 2026年更新:山东市场人物铜雕可靠厂家深度解析与格局洞察 - 品牌鉴赏官2026
  • 规格齐全更省心:如何筛选一家靠谱的4J36低膨胀合金生产商 - 品牌2026
  • 2026年呼叫中心系统行业报告:头部厂商技术能力与落地案例盘点
  • 线性回归的几何本质:从正交投影到梯度下降的直观理解
  • 如何选择iPhone信用卡读卡器?
  • 2026年当下常州食堂承包市场深度解析与实力服务商推荐 - 品牌鉴赏官2026
  • 不同需求怎么选MBA面试辅导机构?2026场景攻略
  • 选材不再迷茫:如何精准筛选口碑良好的17-4PH不锈钢源头厂商? - 品牌2026
  • Tensor数据设置的高效实现:优化内存管理的完整指南
  • Scrapling实战指南:构建智能反检测爬虫的终极解决方案
  • 2026年市场质量好的全彩屏生产厂家排行 - 品牌排行榜
  • pandas多维聚合实战:银行级时间+分组+业务逻辑聚合方法论
  • 边缘AI部署的技术抉择:mobilenetv3_small_100.lamb_in1k的架构权衡与实践指南