我在Subversion(以及一般的存储库)讨论中经常看到这些词。 在过去的几年里,我一直在我的项目中使用SVN,但是我从来没有掌握这些目录的完整概念。
它们是什么意思?
我在Subversion(以及一般的存储库)讨论中经常看到这些词。 在过去的几年里,我一直在我的项目中使用SVN,但是我从来没有掌握这些目录的完整概念。
它们是什么意思?
当前回答
除了Nick所说的,您还可以在流式线:并行软件开发的分支模式中找到更多信息
在这个图中,main是主干,rel1- maintenance是分支,1.0是标记。
其他回答
对于熟悉GIT的人来说,GIT中的master相当于SVN中的trunk。
分支和标记在GIT和SVN中有相同的术语。
我认为一些混淆来自标记概念和SVN中的实现之间的差异。对于SVN来说,标签是一个分支,它是一个副本。修改标签被认为是错误的,事实上,像TortoiseSVN这样的工具会警告你,如果你试图用../tags/..在路上。
主干是保存最新源代码和特性的开发线路。它应该包含最新的错误修复以及添加到项目中的最新功能。
分支通常用于做一些远离主干(或其他开发线)的事情,否则会破坏构建。新特性通常构建在分支中,然后合并回主干中。分支通常包含一些代码,这些代码不一定被分支的开发线所批准。例如,程序员可以尝试对分支中的某些内容进行优化,只有在优化令人满意时才会合并回开发线上。
标记是存储库在特定时间的快照。不应该在这些基础上进行任何开发。它们最常用于获取发布给客户端的内容的副本,以便您可以轻松地访问客户正在使用的内容。
这里有一个链接到一个非常好的知识库指南:
源码控制
维基百科上的文章也值得一读。
标签=在时间上定义的片段,通常用于发布
我认为这就是人们通常所说的“标签”。但是在Subversion中:
它们没有任何正式的含义。文件夹对于SVN来说就是一个文件夹。
我觉得很困惑:一个对分支或标签一无所知的修订控制系统。从实现的角度来看,我认为创建“副本”的Subversion方式非常聪明,但我必须了解它,这就是我所说的有漏洞的抽象。
或者我使用CVS的时间太长了。
除了Nick所说的,您还可以在流式线:并行软件开发的分支模式中找到更多信息
在这个图中,main是主干,rel1- maintenance是分支,1.0是标记。