当前位置: 首页 > news >正文

SVN的标准目录结构:trunk、branches、tags(转)

我们在一些著名开源项目的版本库中,通常可以看到trunk, branches, tags等三个目录。由于SVN固有的特点,目录在SVN中并没有特别的意义,但是这三个目录却在大多数开源项目中存在,这是因为这三个目录反映了软件开发的通常模式。

trunk是主分支,是日常开发进行的地方。
branches是分支。一些阶段性的release版本,这些版本是可以继续进行开发和维护的,则放在branches目录中。又比如为不同用户客制化的版本,也可以放在分支中进行开发。
tags目录一般是只读的,这里存储阶段性的发布版本,只是作为一个里程碑的版本进行存档。

比如一个项目有main.cpp, common.h两个文件,假设目前在开发的是最新的3.0版本,而且1.0/2.0版本也在进行维护,那么项目树将类似如下样子:
project
  |
  +-- trunk
  +     |
  +     +----- main.cpp  (3.0版本的最新文件)
  +     +----- common.h
  +
  +-- branches
  +     |
  +     +-- r1.0
  +     +     |
  +     +     +---- main.cpp (1.x版本的最新文件)
  +     +     +---- common.h 
  +     +
  +     +-- r2.0
  +           |
  +           +---- main.cpp (2.x版本的最新文件)
  +           +---- common.h
  +      
  +-- tags   (此目录只读)
        |
        +-- r1.0
        +     |
        +     +---- main.cpp (1.0版本的发布文件)
        +     +---- common.h 
        +
        +-- r1.1
        +     |
        +     +---- main.cpp (1.1版本的发布文件)
        +     +---- common.h
        +
        +-- r1.2
        +     |
        +     +---- main.cpp (1.2版本的发布文件)
        +     +---- common.h 
        +
        +-- r1.3
        +     |
        +     +---- main.cpp (1.3版本的发布文件)
        +     +---- common.h
        +
        +-- r2.0
        +     |
        +     +---- main.cpp (2.0版本的发布文件)
        +     +---- common.h 
        +
        +-- r2.1
              |
              +---- main.cpp (2.1版本的发布文件)
              +---- common.h

  要使用这样的文件夹结构,在建立项目版本库时,可首先建好项目文件夹,并在其中建立trunk, branches, tags三个空的子目录,再将项目文件夹连同这三个子目录一起导入版本库。这样在trunk中开始进行开发,当需要建立branch或tag时,使用SVN的copy操作进行。其中tags目录需要只读,可以使用SVN中的authz文件控制该目录的访问权限为只读。

转自:http://techlife.blog.51cto.com/212583/223704

转载于:https://www.cnblogs.com/bffc/p/3678590.html

相关文章:

  • hdu 2844 混合背包【背包dp】
  • MySQL高可用架构之MHA
  • Js基础知识(四) - js运行原理与机制
  • Bootstrap your Django admin in 3 minutes
  • CALayer动画专题
  • 虽然看的一知半解,但是感觉有一天用到时会很有用,转
  • B1016. 部分A+B (15)
  • OSGi与第一层语义
  • 如何避免TiddlyWiki变慢
  • 山寨一个 Promise
  • 重写、覆盖、重载、多态几个概念的区别分析
  • Ankara prefabrik evler
  • oracle 简单SQL
  • 快速安装配置zabbix_agent端
  • hdu 1754:I Hate It(线段树,入门题,RMQ问题)
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 【css3】浏览器内核及其兼容性
  • Python socket服务器端、客户端传送信息
  • react 代码优化(一) ——事件处理
  • spring security oauth2 password授权模式
  • vue.js框架原理浅析
  • webpack+react项目初体验——记录我的webpack环境配置
  • win10下安装mysql5.7
  • 分布式任务队列Celery
  • 解析 Webpack中import、require、按需加载的执行过程
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 如何进阶一名有竞争力的程序员?
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 事件委托的小应用
  • 思考 CSS 架构
  • 小程序button引导用户授权
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • MyCAT水平分库
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • ​如何防止网络攻击?
  • # include “ “ 和 # include < >两者的区别
  • #{}和${}的区别?
  • #vue3 实现前端下载excel文件模板功能
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (3)STL算法之搜索
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (一)Neo4j下载安装以及初次使用
  • .bat批处理(六):替换字符串中匹配的子串
  • .naturalWidth 和naturalHeight属性,
  • .NET Core 2.1路线图
  • .NET Framework .NET Core与 .NET 的区别
  • .Net(C#)自定义WinForm控件之小结篇
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。