网站首页 > java教程 正文
SVN 基本认识
- 定位:集中式版本控制系统,适合代码协作、版本追踪和备份。
- 核心概念:
- 仓库(Repository):服务器端的中央存储库,保存所有版本历史。
- 工作副本(Working Copy):用户本地的代码副本,与仓库交互。
- 提交(Commit):将本地修改上传到仓库。
- 更新(Update):从仓库拉取最新代码到本地。
- 分支(Branch):独立开发线,用于并行开发或隔离风险。
- 合并(Merge):将分支代码整合回主干。
- 与 Git 对比:
- 特性SVNGit架构集中式分布式网络依赖提交/更新需联网本地可完成大部分操作速度较慢(尤其是大仓库)快学习曲线简单较复杂适用场景小型团队、内部项目开源项目、大型协作
2. 安装与配置
- 安装 SVN 客户端
- Windows:推荐 TortoiseSVN(图形化工具 + 命令行集成)。
- Linux/macOS:通过包管理器安装:
# Ubuntu/Debian
sudo apt-get install subversion
# macOS (需先安装 Homebrew)
brew install svn
- 配置用户信息(可选)
编辑 ~/.subversion/config 文件,设置默认用户名和密码:
[auth]
username = your_name
password = your_password
3. 核心操作命令
仓库操作
命令 | 作用 |
svnadmin create /path/to/repo | 创建新仓库 |
svnserve -d -r /path/to/repo | 启动 SVN 服务(默认端口 3690) |
本地工作流
命令 | 作用 |
svn checkout <仓库URL> [目录] | 检出代码到本地(简写 svn co) |
svn update | 更新本地代码到最新版本 |
svn add <文件/目录> | 将新文件纳入版本控制 |
svn commit -m "日志" | 提交修改到仓库(简写 svn ci) |
svn status | 查看本地修改状态 |
svn log | 查看提交历史 |
svn diff | 查看文件修改内容 |
svn revert <文件> | 撤销本地未提交的修改 |
4. 分支与合并
- 创建分支
svn copy <主干URL> <分支URL> -m "创建分支"
svn checkout <分支URL> # 切换到分支
- 合并分支到主干
svn checkout <主干URL>
svn merge <分支URL> # 在主干目录执行
svn commit -m "合并分支"
- 解决冲突
- 冲突文件会标记为 C,手动编辑后执行:
svn resolved <冲突文件> # 标记冲突已解决
svn commit -m "解决冲突"
5. 图形化工具(TortoiseSVN)
- 右键菜单集成:通过文件资源管理器的右键菜单完成所有操作。
- 关键功能:图标覆盖:文件状态通过图标颜色显示(如绿色√=已同步,红色!=冲突)。
- 日志查看:图形化显示提交历史、修改详情。
- 差异对比:内置对比工具,支持文本和二进制文件。
6. 高级技巧
- 忽略文件
编辑仓库的 svn:ignore 属性,忽略临时文件(如 .class, .idea):
svn propset svn:ignore "*.class" .
svn commit -m "忽略.class文件"
- 回滚版本
svn merge -r 当前版本号:目标版本号 .
svn commit -m "回滚到版本X"
- 权限控制
修改仓库的 conf/svnserve.conf 和 conf/passwd 文件,配置用户访问权限。
7. 常见问题
- “工作副本已锁定”错误
执行清理命令:
svn cleanup
- 提交冲突
优先沟通团队协作,避免多人同时修改同一文件。
使用 svn update 及时同步代码。
- 大文件存储效率低
SVN 不适合管理二进制大文件(如图片、视频),考虑使用 Git LFS 或专用工具。
8. 适用场景建议
- 适合 SVN:
- 内部项目管理,需简单权限控制。
- 非代码文件(如设计稿)的版本追踪。
- 团队对 Git 不熟悉,需快速上手。
- 建议转向 Git:
- 需要频繁离线开发。
- 大型开源项目协作。
- 复杂分支策略(如 Git Flow)
猜你喜欢
- 2025-06-28 class版本不兼容错误原因分析(class更新)
- 2025-06-28 甲骨文Oracle公司为Java的最新LTS版本做出改进
- 2025-06-28 「版本发布」Minecraft Java开发版 1.19.4-pre1 发布
- 2025-06-28 我的世界1.8.10钻石在第几层(我的世界1.7.2钻石在哪层)
- 2025-06-28 Java开发高手必备:在电脑上轻松切换多个JDK版本
- 2025-06-28 2022 年 Java 开发报告:Java 8 八年不到,开发者都在用什么?
- 2025-06-28 开发java项目,选择哪个版本的JDK比较合适?
- 2025-06-28 Java版本选型终极指南:8 vs 17 vs 21特性对决!大龄程序员踩坑总结
你 发表评论:
欢迎- 最近发表
-
- class版本不兼容错误原因分析(class更新)
- 甲骨文Oracle公司为Java的最新LTS版本做出改进
- 「版本发布」Minecraft Java开发版 1.19.4-pre1 发布
- java svn版本管理工具(svn软件版本管理)
- 我的世界1.8.10钻石在第几层(我的世界1.7.2钻石在哪层)
- Java开发高手必备:在电脑上轻松切换多个JDK版本
- 2022 年 Java 开发报告:Java 8 八年不到,开发者都在用什么?
- 开发java项目,选择哪个版本的JDK比较合适?
- Java版本选型终极指南:8 vs 17 vs 21特性对决!大龄程序员踩坑总结
- POI Excel导入(poi excel导入附件)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)