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

相关文章

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目

OpenCV结构分析与形状描述符(11)椭圆拟合函数fitEllipse()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C++11 算法描述 围绕一组2D点拟合一个椭圆。 该函数计算出一个椭圆,该椭圆在最小二乘意义上最好地拟合一组2D点。它返回一个内切椭圆的旋转矩形。使用了由[90]描述的第一个算法。开发者应该注意,由于数据点靠近包含的 Mat 元素的边界,返回的椭圆/旋转矩形数据

CentOS下mysql数据库data目录迁移

https://my.oschina.net/u/873762/blog/180388        公司新上线一个资讯网站,独立主机,raid5,lamp架构。由于资讯网是面向小行业,初步估计一两年内访问量压力不大,故,在做服务器系统搭建的时候,只是简单分出一个独立的data区作为数据库和网站程序的专区,其他按照linux的默认分区。apache,mysql,php均使用yum安装(也尝试

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录 在深度学习项目中,目标检测是一项重要的任务。本文将详细介绍如何使用Detectron2进行目标检测模型的复现训练,涵盖训练数据准备、训练命令、训练日志分析、训练指标以及训练输出目录的各个文件及其作用。特别地,我们将演示在训练过程中出现中断后,如何使用 resume 功能继续训练,并将我们复现的模型与Model Zoo中的

C语言程序设计(选择结构程序设计)

一、关系运算符和关系表达式 1.1关系运算符及其优先次序 ①<(小于) ②<=(小于或等于) ③>(大于) ④>=(大于或等于 ) ⑤==(等于) ⑥!=(不等于) 说明: 前4个优先级相同,后2个优先级相同,关系运算符的优先级低于算术运算符,关系运算符的优先级高于赋值运算符 1.2关系表达式 用关系运算符将两个表达式(可以是算术表达式或关系表达式,逻辑表达式,赋值表达式,字符

Science|癌症中三级淋巴结构的免疫调节作用与治疗潜力|顶刊精析·24-09-08

小罗碎碎念 Science文献精析 今天精析的这一篇综述,于2022-01-07发表于Science,主要讨论了癌症中的三级淋巴结构(Tertiary Lymphoid Structures, TLS)及其在肿瘤免疫反应中的作用。 作者类型作者姓名单位名称(中文)通讯作者介绍第一作者Ton N. Schumacher荷兰癌症研究所通讯作者之一通讯作者Daniela S. Thomm