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/
SVN 创建发行版/分支版的步骤的更多相关文章
- SVN创建资源与分支详解
创建分支的意义: 简单说,分支就是用于区分开发版本与当前发布版本的. 1. 主干负责新功能的开发 2..分支负责修正当前发布版本的bug(对于可以放入下个发布版本的改进性bug可以直接在主干上开发) ...
- SVN创建主干,分支、合并分支
1.创建主干(trunk) 本文承接上文部分内容:http://www.cnblogs.com/dadonggg/p/8383696.html:部分不明,可以访问这篇文章. 当我们创建完代码仓库后,创 ...
- ArcGIS分支版本化( Branch Versioning )技术介绍
概述 分支版本化技术是有别于传统的SDE版本化技术,它用于支持WebGIS模式下的多用户长事务编辑. 优势功能 使用分支版本化技术将获得以下功能 1. 支持长事务的编辑. 2. 支持Undo和Redo ...
- SVN创建分支主干策略
本篇目录 前言 SVN分支管理策略 VisualSVN Server TortoiseSVN客户端 Repository的创建 Check out trunk创建新项目MyProject trunk更 ...
- 下载文件时-修改文件名字 Redis在Windows中安装方法 SVN安装和使用(简单版) WinForm-SQL查询避免UI卡死 Asp.Net MVC Https设置
下载文件时-修改文件名字 1后台代码 /// <summary> /// 文件下载2 /// </summary> /// <param name="Fil ...
- 使用PowerDesigner创建数据库表图文并茂版
使用PowerDesigner创建数据库表图文并茂版 使用PowerDesigner 建数据库表. 一直很忙,没有时间写东西.这次搞点会声会色的,嘿嘿 此技能为项目经理必备技能. 本次主角: 1.在w ...
- svn 创建主干 分支版本
转载 https://www.cnblogs.com/dongzhiquan/p/5222018.html SVN分支与合并 一. 分支与合并的概念 二. SVN分支的意义 三. 如何创建分支与合并 ...
- svn 创建分支、切换分支 及 合并分支 操作
关联远程仓库: 右键 --- 点击 ' SVN Checkout...' 生成 打开trunk目录,在trunk目录下新建两个文本文件A.java,B.java: 打开A.java输入以下内容: ...
- svn创建分支的做法
作者:朱金灿 来源:http://blog.csdn.net/clever101 1. 首先选择你要创建分支的工作目录,如下图: 2.选择要创建分支的路径.注释以及版本,选择HEADrevision ...
随机推荐
- Linux内核最顶层文档
Linux 内核文档 该文件是 Linux 内核文档树中最顶层的,会随着内核一起更新:其目的是把散乱的文档集成为一个逻辑清晰的完整版,非常欢迎改善文档,如果想做出自己的贡献,加入vger.kernel ...
- mac查看开关机记录-last命令
命令 last | grep reboot (查看开机时间记录) last | grep shutdown (查看关机时间记录) /var/log/messages日志中查询reboot(系统重启) ...
- MyBatis框架的基本配置
MyBatis的基本配置文件: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE config ...
- 基于iCamera测试高清摄像头SIV100B(替代ov7670)小结
基于iCamera测试高清摄像头SIV100B(替代ov7670)小结 先看看siv100b主要关键参数 SIV100B与OV7670分辨率和基本特性都差不多,而siv100b,像素尺寸更小,灵敏度更 ...
- Golang 怎么给WaitGroup加超时时间
怎么给WaitGroup加超时时间呢?刚好群里有人问了我这个问题,我就把我的方法在这边贴出来了. var w = sync.WaitGroup{} var ch = make(chan bool) w ...
- 【算法】342- JavaScript常用基础算法
一个算法只是一个把确定的数据结构的输入转化为一个确定的数据结构的输出的function.算法内在的逻辑决定了如何转换. 基础算法 一.排序 1.冒泡排序 //冒泡排序function bubbleSo ...
- Java做成Zip文件,Java实现压缩文件
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import ...
- LeetCode 1290. 二进制链表转整数
地址 https://www.acwing.com/solution/LeetCode/content/7132/ 题目描述给你一个单链表的引用结点 head.链表中每个结点的值不是 0 就是 1.已 ...
- DefinePlugin插件用法
作者:水涛 座右铭:天行健,君子以自强不息 自白:我写博文上来蹭蹭就是干,我突然觉得我需要幽默一点了,好了,下面我们说正经的 一.官方定义: DefinePlugin DefinePlugin 允许创 ...
- Linux下shell通用脚本启动jar(微服务)
Linux下shell通用脚本启动jar(微服务) vim app_jar.sh #!/bin/bash #source /etc/profile # Auth:Liucx # Please chan ...