svn的branch/tag

2023-10-27

http://www.cnblogs.com/mingyongcheng/archive/2011/05/21/2053139.html


本节主要讲解一下在SVN中Branch和tag的比较,SVN中Branch和tag在一个功能选项中,在使用中也往往产生混淆。在实现上,branch和tag,对于svn都是使用copy实现的,所以他们在默认的权限上和一般的目录没有区别。至于何时用tag,何时用branch,完全由人主观的根据规范和需要来选择,而不是强制的(比如cvs),下面我们就来看一下SVN中Branch和tag的具体介绍。

SVN中Branch和tag的比较
在SVN中Branch和tag在一个功能选项中,在使用中也往往产生混淆。在实现上,branch和tag,对于svn都是使用copy实现的,所以他们在默认的权限上和一般的目录没有区别。至于何时用tag,何时用branch,完全由人主观的根据规范和需要来选择,而不是强制的(比如cvs)。

一般情况下,tag,是用来做一个milestone的,不管是不是release,都是一个可用的版本。这里,应该是只读的。更多的是一个显示用的,给人一个可读(readable)的标记。
branch,是用来做并行开发的,这里的并行是指和trunk进行比较。比如,3.0开发完成,这个时候要做一个tag,tag_release_3_0,然后基于这个tag做release,比如安装程序等。trunk进入3.1的开发,但是3.0发现了bug,那么就需要基于tag_release_3_0做一个branch,branch_bugfix_3_0,基于这个branch进行bugfix,等到bugfix结束,做一个tag,tag_release_3_0_1,然后,根据需要决定branch_bugfix_3_0是否并入trunk。对于svn还要注意的一点,就是它是全局版本号,其实这个就是一个tag的标记,所以我们经常可以看到,什么什么release,基于xxx项目的2xxxx版本。就是这个意思了。但是,它还明确的给出一个tag的概念,就是因为这个更加的可读,毕竟记住tag_release_1_0要比记住一个很大的版本号容易的多。

SVN中Branch和tag建立的方法比较简单,totoiseSVN中的操作是:
1.选择Branch和tag..
2.在出来的界面中的ToURL中填上URL,一般是svn://IP/Project/branches/branch-1,这样就建立了一个branch-1的branch.建立tag是一样的操作,只不过URL一般是svn://IP/Project/tags/tag-1
3.后面的Createcopyfrom是用于选择从你当前的workingbase中的哪个版本中建立Branch和tag,可以根据自己的选择来订制,一般选择HeadRevision
subclipse中几乎是一样的操作。

Merge分为很多种:
1.多个branch之间merge
2.branchmerge到trunk
3.trunkmerge到branch
第2种用的比较多,比如在otfs接口中netamount的需求提出后就得建立一个netamount的branch,trunk继续在非netamount的情况下继续开发,netamount单独开发,当netamount功能测试通过后,将netamountbranchmerge到trunk下,然后将trunkrelease。第3种情况用的也不少,如上的例子,当用户进行netamount测试时,如果用户不想只测试netamount的功能,则需要将trunk中的修改merge到netamountbranch,然后从netamountbranch中发布一个版本供用户测试。

branch merge to trunk在tortoiseSVN操作如下:
1.选择TortoiseSVN->Merge
2.选择Reintegrateabranch
3.选择FromURL,URL填好之后可以点击ShowLog,可以看看这个branch是否是你要merge的内容,下面的Workingcopy中也可以ShowLog,可以确认一下你的工作目录是否是trunk。确认后点击Next
4.MergeOptions里面有些选项,根据需要来选择,TestMerge按钮会告诉你这次Merge会做哪些操作,最好先TestMerge一下!如果是预期的Merge操作,点击Merge则可以将branchMerge到本地工作目录下
5.有冲突的文件需要解决好冲突,解决之后点击svncommit则完成了merge

SVN中Branch和tag比较介绍时从多个revision中merge到本地工作目录在tortoiseSVN的操作如下:
1.选择TortoiseSVN->Merge
2.选择Mergearangeofrevisions
3.URLtomergefrom填上merge的来源,merge来源一般和你的workingcopy是不同的branch或者workingcopy是trunk而mergefrom是branch
4.Revisionrangetomerge填上需要merge的revision,格式是1,3,5或者1-10
5.后续操作同Reintegrateabranch

subclipse进行Merge操作同tortoiseSVN的操作方式有所区别,原理基本同Mergearangeofrevisions。
点击Team->Merge后,只有一个界面,这个界面提供了两种Merge操作方式:
1.Merge某个版本范围内的修改到本地工作目录上
2.Mergefeaturebranch到trunk(也需要先merge到本地)
第1种的操作方法是:
1.在fromurl中填上branch的url
2.fromrevision中选择建立这个branch的revision号,不是最新的那个版本号!
3.tourl框中勾上"Use'From:'URL"这个checkbox,ToRevision中选择需要需要Merge到的revision号,一般勾headrevision
4.Dryrun让你预览一下merge效果,UnifiedDiff将Merge的两边进行Diff并将Diff结果保存到文件中。(在我机器中Dryrun没有窗口出来,diff结果的文件除非只有很小的变化,不然看得头大)
5.点击Merge将merge到本地,这时候与版本库进行一下同步应该和上一步的dryrun有同样的效果,如果merge过来的东西不是你预期的更改可以选择revert,但是新增的文件需要手工删除!如果是预期的merge效果,那commit,记得在comments中写上merge来的branch、fromrevision、torevision(不要写head,写数字)总的来看subclipse的merge操作并不方便,不如tortoiseSVN。SVN中Branch和tag的比较介绍完毕。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

svn的branch/tag 的相关文章

  • `git svn rebase` 与 `git rebase trunk`

    我正在开发一个使用 subversion 作为存储库的项目 因为我需要进行一些还无法发送到 svn 服务器的更改 所以我开始使用git svn这样我就可以进行本地签到 我的设置如下所示 分支机构 trunk 跟踪 svn trunk mas
  • 当主干/分支/标签结构混乱时,如何从 Subversion 迁移到 Mercurial?

    我想将存储库从 Subversion 转换为 Mercurial 但是当我最初设置存储库时 我以最懒的方式完成了它 随着时间的推移 该结构不断变形和恶化 此时已有 5 年历史 尽管如此 我还是想保留尽可能多的历史 即使我必须弄脏并手动将东西
  • 由于 poms 中的版本发生更改,合并来自 Maven 发布分支的更改会产生冲突

    按照标准实践 我有一个用于功能开发的 svn 主干 以及一个用于构建版本的分叉分支 该分支是使用 maven 发布插件创建的 该插件也用于创建发布 碰巧的是 偶尔的错误将在分支上修复 并且这些更改需要合并回主干 为了不错过任何更改 我希望能
  • 如何将svn文件夹上一级

    我需要将 svn 文件夹移至上一级并保留所有历史记录 所有文件和目录来自https myserver com svn Project trunk into https myserver svn Project 我使用一个命令 svn mov
  • 在 Subversion 中合并分支时预防冲突

    我最近在 Subversion 中观察到一个非常奇怪的合并冲突 我使用乌龟SVN作为客户端 干线和分行详细信息请参见以下信息 树干 两个用户正在研究这个问题 QA 是主干合并将发生的分支 为了简单起见 trunk ClassLibrary1
  • 移动 SVN 存储库后的 git-svn ?

    我们最近将 SVN 服务器从一个数据中心迁移到另一个数据中心 并且服务器的 IP 发生了变化 我用了svn switch relocate old url new url更新我的实际工作副本 这很高兴 然而 我的大部分工作都是在本地 git
  • 用于获取有关 SVN 存储库信息的 Python 库?

    我正在寻找一个可以从 SVN 存储库中提取 至少 以下信息的库 not工作副本 修订号及其作者和提交消息 每个修订版中的更改 添加 删除 修改文件 有Python库可以做到这一点吗 对于作者和提交消息 我可以解析 db revprops 0
  • 构建版本与修订号

    我有一个使用 subversion 进行源代码控制的 asp net C 应用程序 我的应用程序会在每个构建上自动增加其 AssembleVersion 和 AssemblyFileVersion 这就像一个魅力 并在网站的管理端显示构建号
  • svn 本地副本中修改的文件列表

    我使用 Tortoise 客户端签出 提交我对 SVN 的更改 但我发现这有点困难 因为我无法找到本地副本中更改的所有文件的列表 有什么捷径或者我忽略的东西吗 我是 SVN 新手 供参考 我不熟悉乌龟 但是对于 linux 的颠覆我会输入
  • 当必须同时使用 Git 和 Subversion 时如何处理 Git-svn

    Update 更详细地说 我尝试在家使用纯 Git 的原因是 我的公司希望迁移到 Git 但经理不愿意进行更改 因为开发人员不了解我们自己的存储库上的 Git 所以 我尝试做的是 我尝试让每个人都使用 Pure git 同时有人可以在这个学
  • 如何在 svn 存储库中本地忽略 .git 和 .gitignore?

    我有一个 SVN 工作副本 由 TortoiseSVN 管理 在该工作副本中 我使用 git 进行本地版本控制和分支 当然 我想隐藏svn的 git目录和 gitignore文件 但是 忽略它们意味着将属性添加到不再是本地的存储库中 我不希
  • TortoiseSVN 不允许我添加任何文件

    我正在尝试使用 TortoiseSVN 1 8 1 将文件添加到 SVN 存储库 我右键单击这些文件并选择 TortoiseSVN gt Add 然后 我选择弹出窗口中的所有文件 然后单击 确定 单击 确定 后 会弹出另一个对话框 所有文件
  • 如何“修复”SVN 分支/树冲突?

    我接手了一个软件项目 决定把所有东西都放在SVN下 上Assembla http www assembla com 使用 Tortoise SVN 树干在ROOT下 所以主干包含了整个应用程序 我标记为 1 0 对于我的第一个重要功能 我创
  • svn获取当前用户

    如何获取特定工作站上使用 svn 的当前用户 我可以使用 svn exe 可执行文件和一些开关来获取该信息吗 Thanks 在 Linux 中 您将在主目录中找到以下文件 subversion auth svn simple 在此文件中 您
  • 如何将 SVN 修订号注入 JAR 中?

    我希望我的 JAR WAR 应用程序知道其源代码的 SVN 修订号是多少 我希望稍后在网页底部等处为网络最终用户呈现此修订号 是否有任何现有的 Maven 插件可以自动化该过程 我认为该插件必须从以下位置收集信息svn并保存到某个文件 例如
  • readthedocs 中自动生成的索引文件

    我无法上传到阅读文档 http docs readthedocs io en latest 我为我的项目准备的文档 我正在尝试了解问题所在 该文档在本地构建良好make html但我无法上传 GitHub 项目是ASCII基因组 https
  • 使用 VisualSVN Server 和 Cruisecontrol.net 检查内容集成中的修改失败

    我正在使用 CruiseControl net 进行持续集成 我使用 VisualSvn 服务器 使用 Windows 身份验证 为我的项目创建了一个存储库 两台服务器都托管在同一系统 Os Microsoft Windows Server
  • 有谁知道类似于 SVN Time-Lapse View 的 Git 工具 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 SVN Time Lapse View 是一个跨平台查看器 可以下载文件的所有修订版本 并允许您通过拖
  • svn删除删除的文件

    我有一个 SVN 项目的工作副本 文件被应用程序从此工作副本中删除 当我使用 SVN 命令行提交工作副本时 我想从存储库中删除这些已删除的文件 如果我使用提交工作副本svn commit它不会从项目中删除文件 因为它们没有在本地删除svn
  • 在 Subversion 中,我可以是登录名以外的用户吗?

    我想知道如何获得Subversion更改我的更改显示的名称 我刚刚开始使用Subversion 我目前正在使用它来对 XP 笔记本电脑上的代码进行版本控制 我总是以我妻子的名字登录 我希望 subversion DB 显示我名下的更改 稍后

随机推荐

  • 数据结构——个人学习笔记

    系列目录 数据结构第一章绪论 数据结构第二章线性表 文章目录 系列目录 2 1线性表的定义和特点 2 2线性表的操作定义 2 3线性表的顺序表示和实现 线性表的重要基本操作 1 初始化线性表 参数用指针 2 插入 新增 3 取值 4 查找
  • easy modbus tcp

    public static void Main string args ModbusClient modbusClient new ModbusClient 190 201 100 100 502 Ip Address and Port o
  • Android组件化和插件化的概念,android快速开发框架

    开发单个模块时可以共享资源和工具类 可以针对单个模块测试 开发调试时不需要对整个项目进行编译 多人合作时可以只关注自己的业务模块 把某一业务当成单一项目来开发 可以灵活的对业务模块进行组装和拆分 4 组件化开发的主要思路 就是将一个Modu
  • c++求行列式的值(全排列法)

    用全排列的方式求行列式的值 递归体现在全排列中 上代码 f函数是求行列式的值 include
  • flink中通过jdbc查询结果集使用 flink table api 创建临时视图

    1 maven依赖
  • [转]QNX_HMI_crank工程的系统移植

    如果你认为本系列文章对你有所帮助 请大家有钱的捧个钱场 点击此处赞助 赞助额0 1元起步 多少随意 声明 本文只用于个人学习交流 若不慎造成侵权 请及时联系我 立即予以改正 锋影 email 174176320 qq com 开发软件 Cr
  • python如何输出多个星号_如何使用python输出连续星号?

    小编依稀记得 自己初学编程时候 第一节课 老师就给我们演示了输出连续星号内容 那时候真感叹python的神奇 重温一遍这个内容 入门小伙伴们可以来看下啦 有关语法 用嵌套打印小星星 需求 在控制台连续输出五行 每一行星号的数量依次递增 使用
  • 如何从配置文件中获取属性

    在项目中添加了一个腾讯云的短信业务 领导说要我把这个项目整合到原本的业务中去 业务那么多 怎么搞 继续询问后得知 是整合到原本的短信业务中 原本用的短信业务是短信猫来发短信 问 需要前端加传的参数吗 答 不允许 继续询问得知 是要在配置文件
  • [转]Tangram框架应用开发的一般模式

    框架其实就是一种开发模式 用tangram框架开发应用程序意味着选择一种面向接口 模块化的开发方式 这和传统的Delphi应用程序开发方式有一定区别 对于刚刚接触框架的童鞋可能不知道如何下手 因此有必要把框架的一般开发方式说明一下 不过框架
  • 深入分析HBase Compaction机制

    Compaction介绍 Compaction是buffer gt flush gt merge的Log Structured Merge Tree模型的关键操作 主要起到如下几个作用 1 合并文件 2 清除删除 过期 多余版本的数据 3
  • 二叉树算法

    每日一句 少年就是少年 他们看春风不喜 看夏蝉不烦 看秋风不悲 看冬雪不叹 看满身富贵懒察觉 看不公不允敢面对 只因他们是少年 目录 用递归和非递归两种方式实现二叉树的先序 中序 后序遍历 递归方法 非递归方法 如何完成二叉树的宽度优先遍历
  • 报文摘要算法

    1 报文摘要算法 报文摘要算法是一种将任意长度报文转换成固定长度的报文摘要算法 它具有以下六个特点 能够作用于任意长度的报文 产生有限位数的标识信息 易于实现 具有单向性 具有抗碰撞性 具有高灵敏性 1 1 MD5 1 1 1 添加填充位
  • Pytorch —— nn.Module类(nn.sequential)

    对于前面的线性回归模型 Logistic回归模型和神经网络 我们在构建的时候定义了需要的参数 这对于比较小的模型是可行的 但是对于大的模型 比如100 层的神经网络 这个时候再去手动定义参数就显得非常麻烦 所以 PyTorch 提供了两个模
  • STM32CubeMX+Keil5+Proteus实现按键控制LED灯(入门篇)

    嵌入式HAL库实战项目 本文说明 STM32CubeMX安装和使用 Keil实现按键控制LED亮灭 Proteus仿真 补 Proteus连线问题 总结 本文说明 学生党 之前学习过嵌入式的课程 跟着正点原子的视频一步一步地构建项目的工程
  • nodejs日志管理 log4js使用详解

    一 首先是在项目中安装 log4js npm install log4js save 注 log4js日志级别 分别为 lt 权值从小到大 gt all lt trace lt debug lt info lt warn lt error
  • 数据分析 数据规约

    一 概念 数据规约 Data Reduction 是指在尽可能保持数据原貌的前提下 最大限度地精简数据集 数据规约又分为2类 属性规约 和 数值规约 二 属性规约 1 概念 属性规约 Attributes Reduction 是指通过减少数
  • Vue.js

    Vue js 简介 Vue 读音 vju 类似于 view 是一套用于构建用户界面的渐进式框架 JavaScript框架 相比于库 框架更为强大 但是用框架必须遵守其规则 简化DOM操作 对Vue对DOM元素有特殊语法修饰 直接用就完了 响
  • 寻找数字数组的中位数算法详解

    寻找数字数组的中位数算法详解 在编程中 经常需要对数字数组进行各种操作和计算 其中一个常见的需求是找到这个数组的中位数 中位数是指在一组数据中处于中间位置的数值 将数组按照从小到大的顺序排列 中位数即为位于中间位置的数字 本文将详细介绍如何
  • 浪潮服务器u盘安装系统_教你u盘安装iso镜像系统

    原标题 教你u盘安装iso镜像系统 我们喜欢使用ISO的系统镜像文件安装电脑的系统 但是很多用户下载iOS后 却又不知道该怎么操作安装 以前 我们会用光盘进行安装 而现在 我们却很少使用光盘安装了 下面小编就来跟大家解说U盘怎么安装iso系
  • svn的branch/tag

    http www cnblogs com mingyongcheng archive 2011 05 21 2053139 html 本节主要讲解一下在SVN中Branch和tag的比较 SVN中Branch和tag在一个功能选项中 在使用