SVN 创建发行版/分支版的步骤
最近看了很多 Git 与 SVN 的比较,很多都说 SVN 做分支很慢,不知道是从何说起。有可能大家都不清楚,SVN 做分支的正确步骤,特此介绍一下。
SVN 服务器后台使用 Berkeley DB 数据库进行数据保存。当前版本、发行版本、分支版本,在 SVN 客户端处中一般只是当成普通目录。SVN 客户端有很多种,客户端处数据如何保存,没有明确的说法。
比如,SVN 版本库从客户端上看其根目录为:
http://zhegui-svn/svn
几个主要子目录为:
1) | 当前开发主线目录 | http://zhegui-svn/svn/trunk/ |
2) | 之前正式发行版目录 | http://zhegui-svn/svn/releases/ |
3) | 之前或现在各分支版目录 | http://zhegui-svn/svn/branches/ |
4) | 每日构建目录 | http://zhegui-svn/svn/builds/ |
创建分支,或创建发行版,只是一个目录复制操作。由于SVN服务器端的数据是保存在 Berkeley DB 数据库里,因此,目录复制,在数据库层面,只是保存一条“在某个目录下创建一个子目录,新的子目录的内容,等同于另一个目录的那个版本”信息。
那些认为 SVN 复制分支,需要复制整个目录里所有文件的人,或者说出“拉分支的时间较慢,因为拉分支相当于copy”之类话的,都可以从头学习数据库了。反正稍微熟悉一点数据库的一些基本概念的技术人员,都不会设计出“分支要在服务器上复制整个目录里所有文件”这么个逻辑来。
以下是操作步骤举例(使用的 SVN 客户端工具软件是 TortoiseSVN ):
之后选择目录复制的源头、源头目录版本(可以不用最新版,最新版可能有人新加了一个功能,还没做完)、目的地目录:
上述截图中,将项目的主开发目录 http://zhegui-svn/svn/trunk/zhegui_print_upload 对应版本 29423 ,复制到 http://zhegui-svn/svn/releases/zhegui_print_upload-v3.0,即完成了发行版本的服务器上复制功能。一般再大的项目,都是秒级完成。
实际的软件项目开发中,只有以下目录用得比较多:
1) | 当前开发主线目录 | http://zhegui-svn/svn/trunk/ |
以下目录用得比较少:
2) | 之前正式发行版目录 | http://zhegui-svn/svn/releases/ |
3) | 之前或现在各分支版目录 | http://zhegui-svn/svn/branches/ |
4) | 每日构建目录 | http://zhegui-svn/svn/builds/ |
这是因为,创建新发行版本,只是在 SVN 服务器上进行目录复制,相当于只是在Berkeley DB 数据库保存一条“在某个目录下创建一个子目录,新的子目录的内容,等同于另一个目录的那个版本”信息。
那把这句话保存在一个文本文件中,也不费什么事。
同理,每日构建目录的存在意义,也不大。
另一方面,如果是软件产品类开发,有多个不同客户,可能分别进行 bug 修复,则仍有必要使用发行目录:
2) | 之前正式发行版目录 | http://zhegui-svn/svn/releases/ |
希望以上介绍,能帮助到大家。
---------------------------------
本文欢迎转载,转载请注明来源:https://www.cnblogs.com/jacklondon/
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· Blazor Hybrid适配到HarmonyOS系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
· 分享4款.NET开源、免费、实用的商城系统