SVN 创建发行版/分支版的步骤

2019-06-20 12:49

 

最近看了很多 Git 与 SVN 的比较,很多都说 SVN 做分支很慢,不知道是从何说起。有可能大家都不清楚,SVN 做分支的正确步骤,特此介绍一下。

 

SVN 服务器后台使用 Berkeley DB 数据库进行数据保存。当前版本、发行版本、分支版本,在 SVN 客户端处中一般只是当成普通目录。SVN 客户端有很多种,客户端处数据如何保存,没有明确的说法。大多使用 SQLite 作为客户端数据库。

 

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 ):

tortoise svn create branch

 

之后选择目录复制的源头、源头目录版本(可以不用最新版,最新版可能有人新加了一个功能,还没做完)、目的地目录:

tortoise svn create branch fill data

 

上述截图中,将项目的主开发目录 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.zheguisoft.com/staff_blogs/jacklondon_chen/2019, 及 https://www.cnblogs.com/jacklondon/p/step_to_create_release_or_branch_with_svn.html