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中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

PostgreSQL如何查询表结构和索引信息

《PostgreSQL如何查询表结构和索引信息》文章介绍了在PostgreSQL中查询表结构和索引信息的几种方法,包括使用`d`元命令、系统数据字典查询以及使用可视化工具DBeaver... 目录前言使用\d元命令查看表字段信息和索引信息通过系统数据字典查询表结构通过系统数据字典查询索引信息查询所有的表名可

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

自定义类型:结构体(续)

目录 一. 结构体的内存对齐 1.1 为什么存在内存对齐? 1.2 修改默认对齐数 二. 结构体传参 三. 结构体实现位段 一. 结构体的内存对齐 在前面的文章里我们已经讲过一部分的内存对齐的知识,并举出了两个例子,我们再举出两个例子继续说明: struct S3{double a;int b;char c;};int mian(){printf("%zd\n",s

macOS升级后SVN升级

问题 svn: error: The subversion command line tools are no longer provided by Xcode. 解决 sudo chown -R $(whoami) /usr/local/Cellar brew install svn

idea下svn的使用

创建项目 设置ignore文件 创建分支 切换到分支 查看当前分支 创建项目 设置ignore文件 .idea.mvntarget.gitignore*.imlmvnw.cmdmvnw 创建分支 切换到分支 查看当前分支

android应用中res目录说明

Android应用的res目录是一个特殊的项目,该项目里存放了Android应用所用的全部资源,包括图片、字符串、颜色、尺寸、样式等,类似于web开发中的public目录,js、css、image、style。。。。 Android按照约定,将不同的资源放在不同的文件夹中,这样可以方便的让AAPT(即Android Asset Packaging Tool , 在SDK的build-tools目