在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要比记住一个 很大的版本号容易的多。
branches:分枝 当多个人合作,可能有这样的情况出现:John突然有个想法,跟原先的设计不太一致,可能是功能的添加或者日志格式的改进等等,总而言之,这个想法可能需 要花一段时间来完成,而这个过程中,John的一些操作可能会影响Sally的工作,John从现有的状态单独出一个project的话,又不能及时得到 Sally对已有代码做的修正,而且独立出来的话,John的尝试成功时,跟原来的合并也存在困难。这时最好的实践方法是使用branches。 John建立一个自己的branch,然后在里面实验,必要的时候从Sally的trunk里取得更新,或者将自己的阶段成果汇集到trunk中。 (svn copy SourceURL/trunk DestinationURL/branchName -m "Creating a private branch of xxxx/trunk." )
trunk:主干 主干,一般来说就是开发的主要呆的地方,
tag: 在经过了一段时间的开发后,项目到达了一个里程碑阶段,你可能想记录这一阶段的代码的状态,那么你就需要给代码打上标签。 (svn cp file:///svnroot/mojavescripts/trunk file:///svnroot/mojavescripts/tags/mirrorutils_rel_0_0_1 -m "taged mirrorutils_rel_0_0_1")
另有一说,无所谓谁对谁错。
trunk:表示开发时版本存放的目录,即在开发阶段的代码都提交到该目录上。
branches:表示发布的版本存放的目录,即项目上线时发布的稳定版本存放在该目录中。
tags:表示标签存放的目录。 在这需要说明下分三个目录的原因,如果项目分为一期、二期、三期等,那么一期上线时的稳定版本就应该在一期完成时将代码copy到branches上,这 样二期开发的代码就对一期的代码没有影响,如新增的模块就不会部署到生产环境上。而branches上的稳定的版本就是发布到生产环境上的代码,如果用户 使用的过程中发现有bug,则只要在branches上修改该bug,修改完bug后再编译branches上最新的代码发布到生产环境即可。tags的 作用是将在branches上修改的bug的代码合并到trunk上时创建个版本标识,以后branches上修改的bug代码再合并到trunk上时就 从tags的version到branches最新的version合并到trunk,以保证前期修改的bug代码不会再合并。
-------------------------------------------------------------------------------------------
一直以来用svn只是当作cvs,也从来没有仔细看过文档,直到今天用到,才去翻看svn book文档,惭愧
需求一: 有一个客户想对产品做定制,但是我们并不想修改原有的svn中trunk的代码。
方法: 用svn建立一个新的branches,从这个branche做为一个新的起点来开发 svn copy svn://server/trunk svn://server/branches/ep -m "init ep" Tip: 如果你的svn中以前没有branches这个的目录,只有trunk这个,你可以用 svn mkdir branches 新建个目录
需求二: 产品开发已经基本完成,并且通过很严格的测试,这时候我们就想发布给客户使用,发布我们的1.0版本 svn copy svn://server/trunk svn://server/tags/release-1.0 -m "1.0 released"
咦,这个和branches有什么区别,好像啥区别也没有?
是的,branches和tags是一样的,都是目录,只是我们不会对这个release-1.0的tag做修改了,不再提交了,如果提交那么就是branches
需求三: 有一天,突然在trunk下的core中发现一个致命的bug,那么所有的branches一定也一样了,该怎么办?
svn -r 148:149 merge svn://server/trunk branches/ep 其中148和149是两次修改的版本号。
相关推荐
项目 SVN : https://svn.code.sf.net/p/l2jopensource/projects/ Interlude aCis 382 (最新稳定版) https://svn.code.sf.net/p/l2jopensource/projects/Interlude/L2J_aCis/ aCis_382_LATEST_STABLE/ aCis 389(最新...
Android MQL 关系型 数据库相关项目,由于原链接:http://download.csdn.net/source/3344919 是在公司上传的,已经被加密,所以旧链接已经失效,请下载此链接下相应项目(经已解密),有疑问,请联系:qq:343827585。...
SharpSvn 版本:1.9007.3987.251. SVN提供的C#SDK SharpSvn.dll 是为.Net 2.0-4.0+ 应用提供的 Subversion Client API,更多详细介绍请见 https://sharpsvn.open.collab.net/。
通过使用 SharpSvn,开发者可以轻松地在 C#、VB.NET 或其他 .NET 语言中构建 SVN 相关的应用程序。 二、SharpSvn API 结构 SharpSvn 的 API 设计遵循 SVN 的层级结构,包括 SVNClient、SvnRepository 和 ...
svn图标消失解决 http://blog.csdn.net/zlc819240815/article/details/53517680
Spark: svn co http://svn.igniterealtime.org/svn/repos/spark/trunk spark 辛辛苦苦从SVN上下载下来的SOURCE Spark 2.6.3 Spark: spark/trunk part002 第二部分
[14本经典Android开发...7. linux下svn使用指南 8. LFS 相关 9. linux 内核的初步理解 -------------------------------------------------------- 已上传4本: [14本经典Android开发教程]-1-Android开发从入门到精通 ...
SVN(Subversion)是一种版本控制系统,用于管理文件和目录的历史版本。SVN资源库通常使用特定协议访问,比如svn://或***。通过安装SVN并配置它使用http或https协议,用户可以从远程客户端进行访问。以下是从给定...
Cygwin的包管理工具setup.exe实在是难用的让人蛋碎。...wget http://apt-cyg.googlecode.com/svn/trunk/apt-cyg chmod +x apt-cyg mv apt-cyg /usr/local/bin/ 安装包 apt-cyg install bc 查找包 apt-cyg find php
本项目的目的是把EFI/UEFI移植到Loongson... SVN : svn co https://efi-mips.svn.sourceforge.net/svnroot/efi-mips efi-mips 编译方法及移植日志请见Documents目录 2009-6-13 张涛 MSN: kontais@gmail.com
apr-1.5.2.tar.gz,apr-util-1.5.4.tar.gz 下载地址:http://archive.apache.org/dist/apr zlib-1.2.11.tar.gz 下载地址:http://linux.softpedia.com/get/Programming/Libraries/zlib-159.shtml
SVN 错误提示产生原因及处理方法大全 SVN(Subversion)是一种版本控制系统,广泛应用于软件开发、文档管理等领域。...同时,了解 SVN 的基本原理和使用方法,也可以帮助开发者更好地使用 SVN 实现版本控制。
下载地址为:[http://www.busybox.net/downloads/](http://www.busybox.net/downloads/)。 7. **QT**: 一款强大的跨平台应用程序框架,广泛应用于GUI应用程序的开发。官方下载页面为:...
http://www.linuxfromscratch.org/blfs/view/svn/general/yasm.html Introduction to yasm Yasm is a complete rewrite of the NASM-2.14.02 assembler. It supports the x86 and AMD64 instruction sets, accepts ...
掌握并熟练使用这些插件的在线更新地址,对于保持开发工具的最新状态、提升开发效率至关重要。开发者们应定期检查并更新这些插件,以确保其功能的完整性和安全性。通过上述插件的应用,可以显著提高在Eclipse环境下...
XAVS svn-r55 <http://xavs.sourceforge.net/> Xvid 1.3.4 <http://xvid.org/> z.lib 2.0.4 <https://github.com/sekrit-twc/zimg> XZ Utils 5.2.2 <http://tukaani.org/xz> zlib 1.2.8 <http://zlib.net/> ...
XAVS svn-r55 <http://xavs.sourceforge.net/> Xvid 1.3.3 <http://xvid.org/> XZ Utils 5.2.0 <http://tukaani.org/xz> zlib 1.2.8 <http://zlib.net/> The source code for this FFmpeg build can be found ...
XAVS svn-r55 <http://xavs.sourceforge.net/> Xvid 1.3.3 <http://xvid.org/> XZ Utils 5.2.0 <http://tukaani.org/xz> zlib 1.2.8 <http://zlib.net/> The source code for this FFmpeg build can be found ...
SVN(Subversion)是一种广泛使用的版本控制系统,用于管理和跟踪文件和目录的变更。它允许团队成员协同工作,记录每次更改,以便于回滚错误,合并不同开发者的修改,并保持项目历史的完整记录。在本文件包中,你将...
根据提供的链接(http://blog.csdn.net/hzfw2008/article/details/75549006),我们可以得知一种可能的方法是使用VisualSVN Server的扩展功能——mod_authnz_ldap模块。这个模块允许我们连接到LDAP服务器,如...