Svn目录结构:trunk;tags;branches

2024-03-25 17:08

本文主要是介绍Svn目录结构:trunk;tags;branches,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Svn目录结构:trunk;tags;branches

在Svn世界中,目录没有特殊的含义(都是人为赋予的),也就是说,所谓的目录结构并不是必须的,而是一种***约定俗成的***,大家都这么使用的“事实上的标准”。

你不这么构造目录结构,也完全可以。

但是出于各方面考虑,还是建议遵从一般的约定来构造Svn目录的。

假设有一个repo为:svn://ip:port/,其中有一个项目是myproj,那么这个项目的url为:

svn://ip:port/myproj

标准地来说,在myproj目录下应该至少有三个目录:trunk,tags以及branches。

svn://ip:port/myproj/trunk
svn://ip:port/myproj/tags
svn://ip:port/myproj/branches

trunk为主开发目录,branches为分支开发目录,tags为tag存档目录(不允许修改)。

trunk:

是svn开发的主干,日常开发都是从这里出库最新代码,然后合并到主干中。

tags:

milestone。是各种具有一定意义的,阶段性的发布版,比如有个1.0版本,可以打一个tag,有个2.0版本,再打一个tag,等等。

branches:

trunk是主干,那么branches相对来说就是分支了。例如某些版本还需要继续维护和开发,可以放在branches中(注:tags中通常不再对其修改);例如某些版本是为了某些客户专门修改过的,也可以放置在branches中。

通常来说tags目录是只读的,可以使用svn的authz来对其进行限制。

tags的作用:

在经过了一段时间的开发后,项目到达了一个里程碑阶段,你可能想记录这一阶段的代码的状态,那么你就需要给代码打上标签。

branches的作用可以用下面例子来解释:

John突然有个想法,跟原先的设计不太一致,可能是功能的添加或者日志格式的改进等等,总而言之,这个想法可能需要花一段时间来完成,而这个过程中,John的一些操作可能会影响Sally的工作,John从现有的状态单独出一个project的话,又不能及时得到Sally对已有代码做的修正,而且独立出来的话,John的尝试成功时,跟原来的合并也存在困难。这时最好的实践方法是使用branches。John建立一个自己的branch,然后在里面实验,必要的时候从Sally的trunk里取得更新,或者将自己的阶段成果汇集到trunk中。

branches还可以:

有个客户想要定制化的产品,但是我们并不想修改svn中trunk中的代码,因为不能因为一个客户影响了整个项目的日常开发呀。

于是我可以建个branch,然后从trunk中copy一份到branch,继而进行客户定制化开发。

当发现阶段性的tag存在一个bug,想要修复,我可以把它branch出来,单独修复bug,完事之后再打一个tag,标识这个是修复好的版本,然后可以将这个修复merge到trunk。

我们公司当前的结构基本是:

这里写图片描述

还是那句话,svn不强制要求如何如何规定目录结构,怎么用还是在于个人。

参考来源:

1.http://www.cnblogs.com/newstar/archive/2011/01/04/svn.html
2.http://www.jianshu.com/p/15b60bdfa856
3.http://blog.csdn.net/pttaag/article/details/8076210

这篇关于Svn目录结构:trunk;tags;branches的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/845670

相关文章

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

Linux修改pip临时目录方法的详解

《Linux修改pip临时目录方法的详解》在Linux系统中,pip在安装Python包时会使用临时目录(TMPDIR),但默认的临时目录可能会受到存储空间不足或权限问题的影响,所以本文将详细介绍如何... 目录引言一、为什么要修改 pip 的临时目录?1. 解决存储空间不足的问题2. 解决权限问题3. 提

mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据

《mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据》文章主要介绍了如何从.frm和.ibd文件恢复MySQLInnoDB表结构和数据,需要的朋友可以参... 目录一、恢复表结构二、恢复表数据补充方法一、恢复表结构(从 .frm 文件)方法 1:使用 mysq

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

Java中switch-case结构的使用方法举例详解

《Java中switch-case结构的使用方法举例详解》:本文主要介绍Java中switch-case结构使用的相关资料,switch-case结构是Java中处理多个分支条件的一种有效方式,它... 目录前言一、switch-case结构的基本语法二、使用示例三、注意事项四、总结前言对于Java初学者

更改docker默认数据目录的方法步骤

《更改docker默认数据目录的方法步骤》本文主要介绍了更改docker默认数据目录的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1.查看docker是否存在并停止该服务2.挂载镜像并安装rsync便于备份3.取消挂载备份和迁

结构体和联合体的区别及说明

《结构体和联合体的区别及说明》文章主要介绍了C语言中的结构体和联合体,结构体是一种自定义的复合数据类型,可以包含多个成员,每个成员可以是不同的数据类型,联合体是一种特殊的数据结构,可以在内存中共享同一... 目录结构体和联合体的区别1. 结构体(Struct)2. 联合体(Union)3. 联合体与结构体的

python获取当前文件和目录路径的方法详解

《python获取当前文件和目录路径的方法详解》:本文主要介绍Python中获取当前文件路径和目录的方法,包括使用__file__关键字、os.path.abspath、os.path.realp... 目录1、获取当前文件路径2、获取当前文件所在目录3、os.path.abspath和os.path.re