SVN 中的 truck、branch 和 tag

问题

使用 SVN 进行项目的版本管理时, truck(主干)、branch(分支) 和 tag(标签) 是如何区别?何时使用他们?

branch/tag

版本控制系统的一个特性是能够把各种修改分离出来放在开发品的一个分割线上。这条线被称为 branch。 branch 经常被用来试验新的功能,而不会对开发有编译错误的干扰。当新的功能足够稳定之后,开发品的 branch 就可以 merge(合并)回 主branch(trunk)。

版本控制系统的另一个特性是能够标记特殊的版本(例如某个发布版本),所以你可以在任何时候重新建立一个特定的构件和环境。这个过程被称作 tag。

Subversion 没有特殊的命令用于 branch 或 tag,而是使用所了所谓的“cheap copies(廉价拷贝)”。廉价拷贝类似于 UNIX 的硬链接,这意味着并不会在存储库中做一个完整的副本,而是创建了一个内部链接,用于指向一个特定的树/修订。这样, branch 或 tag 就能非常快的创建,几乎不会占用没有额外存储库的空间。

创建一个branch 或 tag

如果你用推荐的目录结构导入了一个工程,那么创建 branch 或 tag 就非常简单:


在你当前的工作副本中给你你想要复制的 branch 或 tag 选择一个目录,然后选择命令TortoiseSVNBranch/Tag...

默认的目标 URL 将会是你当前工作副本所处的源 URL。你必须给你的branch 或 tag 编辑一个新路径。来取代

http://svn.collab.net/repos/ProjectName/trunk 

你可以使用这样的设置

http://svn.collab.net/repos/ProjectName/tags/Release_1.10 

如果你忘记了你上一次使用的命名约定,可以用鼠标右键打开版本库浏览器来察看已经存在的版本库结构。

现在你必须选择要复制的源位置。在这里你有三个设置选项:

  • HEAD revision in the repository: 新 branch 直接从仓库中的 HEAD revision 里复制出来。不需要从你的工作副本中传输任何数据,这个 branch 的建立是非常快的。
  • Specific revision in the repository: 在仓库中直接复制建立一个新 branch 同时你也可以选择一个旧版本。假如在你上周发布了项目时忘记了做 tag ,这将非常有用。如果你记不起来版本号,通过点击鼠标右键来显示版本日志,同时从这里选取版本号。和上次一样不需要从你的工作副本中传输任何数据,这个 branch 建立起来是非常快的。
  • Working copy: 新的 branch 是一个完全等同于你的本地工作副本的一个副本。如果你更新了一些文件到你的工作副本的某个旧版本里,或者你在本地做出了修改,这些改变将准确无误的进入副本中。自然而然地这种综合的 branch 会包含正在从工作副本传输到版本库的数据,如果这些数据还不存在的话。

参考

时间: 2024-11-03 15:06:42

SVN 中的 truck、branch 和 tag的相关文章

SVN中Branch的创建与合并

在使用源代码版本控制工具时,最佳实践是一直保持一个主干版本.但是为了应付实际开发中的各种情况,适时的开辟一些分支也是很有必要的.比如在持续开发新功能的同时,需要发布一个新版本,那么就需要从开发主干中建立一个用于发布的分支,在分支上进行bug fix,维护版本的稳定,并适时的将一些改动合并回主干.目前大红大紫的源代码版本控制工具git很受大家推崇,原因之一就是其在这方面的功能相当强大.其实老牌的SVN也是有这样的功能的,接下来就给大家讲解下. Branch的创建 在SVN中主干代码一般是放置在Tr

修改SVN中文件的可执行属性

博文来自下面路径,转载请注明原出处: http://bigwhite.blogbus.com/logs/74568031.html   修改SVN中文件的可执行属性 - [开源世界] Tag:开源世界 Subversion 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://bigwhite.blogbus.com/logs/74568031.html 今天做了一些项目版本库的搭建工作,主要是将相关模块和库目录建立好,将Makefile编写好,并添加到SVN库中. 工作

svn-SVN:如何将SVN中的代码下载到本地,然后~~~

问题描述 SVN:如何将SVN中的代码下载到本地,然后~~~ 然后就只是在本地用,即使修改了也不更新到服务器~!~~~~~~~~~~~~~~~~~~~~~~~~~ 解决方案 用svn检出就可以将svn中的代码下载到本地,然后在本地修改不提交这样就不会更新到服务器了 解决方案二: svn export xxxx 解决方案三: 首先你需要有该svn的账号和密码,然后用svn检出,输入服务器地址,账号,密码,下载到本地.只进行更新不提交就可以看到别人改的代码,你改的不会上传到上面.

linux下SVN中改变执行权限

SVN中,如果我们在linux下提交权限为755的文件,就会在svn的属性中存在一个svn:excuteable. 只在本地chmod 644 filename.php,是不能造成修改的. 可以在windows下的svn客户端中,通过修改该文件的属性,Remove掉它的这个可执行属性. Remove之后会重新进行一次commit操作,所以还会弹出让你填写一点备注的输入框. 所以可以看出,svn中保存文件并没有储存属主和类似755这样的权限,只在如果有可执行权限时,checkout和update时

从SVN中导入的项目MyEclipse不能自动编译?

问题描述 从SVN中导入的项目MyEclipse不能自动编译?怎么回事,网上的方法都试过了不起作用! 解决方案 解决方案二:看下JAR包是否齐全以及路径是否正确

svn 中文件直接命令checkout 到linux的指定文件夹里

问题描述 java代码操作直接从svn中checkout文件到linux的指定文件夹中,和将linux指定的文件直接checkin到svn 解决方案

c#-vs通过dataset designer创建的DataSet在SVN中,多出一个Designer1,

问题描述 vs通过dataset designer创建的DataSet在SVN中,多出一个Designer1, vs通过dataset designer创建的 DataSet在上传或者从SVN下载的过正中,会莫名其妙多出一个Designer1,导致dataset不能需改了,这种情况是怎么产生的,该如何避免? 解决方案 删除了designer1再签回去看看呢?

如何彻底删除SVN中的文件和文件夹(附恢复方法)_java

这里假设SVN项目的目录为 /data/svn/project,我们想排除trunk/test.exe文件和trunk/notallowed/目录,操作步骤如下及执行的svn命令(在svn安装目录的bin目录下)如下: # 首先将svn库整个导出  svnadmin dump /data/svn/project > project_original.dump  # 然后将project_original.dump文件里面不需要的文件进行排除并生成一个新的dump文件  type project_

SVN中怎样设置 commit时才能必须加上信息

问题描述 最近在研究JIRE+fisheye+svn SVN以前用得不多.不知道怎样设置 commit时才能必须加上信息提交.问题补充:我知道需要提交JIRA的KEY才可以关联的..我是想问怎样才能设置成必须填..不然有的开发人员忘填了.问题补充:听说是JIRA的啥插件..不知道具体是哪个 解决方案 在windows中禁止svn提交空log messageE:svndatamyapphookspre-commit.bat@echo offrem add by RainChen @ 2007-10