我过去两天一直在研究svn,并希望确保我理解我的东西,并对该计划也有一些疑问。如果我在这里错了,请纠正我:
Trunk:发展的主体。包含每个版本:从开始到现在。
分支:此文件通常包含多个子文件夹,例如错误修复分支或发布分支。它们包含来自主干中某个点的文件,用于对代码进行重大更改。
标签:您希望保留的行李箱或分支上的时间点。例如,版本2比版本3更稳定,因此决定将其保存在标签中。
问题:
1)我对这三个陈述是对的吗?
2)分支和标签看起来非常相似。为什么我们不是只有一个单独的分支来保留标签版本?
3)当一个人检查一个项目时,他通常会开始使用trunk,branch或tags版本?
4)为什么人们更喜欢这个框架?我个人认为有三个文件夹使它更分散。一个例子是首选。感谢
答案 0 :(得分:1)
您必须了解的主要观点是,主干/分支/标签只是您可以自由使用或不使用的建议布局。虽然它是事实上的标准,但强烈建议您在某些情况下可以使用修改后的版本,甚至根本不使用它。这一切都来自于设计决策。其他版本控制工具提供了分支和标记的内置功能,但Subversion没有。相反,他们倾向于让用户使用目录模拟这些功能,并利用廉价副本概念。
简而言之:您可以自由地使用分支和标签,但是,如果您选择,您必须使用目录,因为没有其他方法并坚持标准允许第三方自动了解您正在做什么(包括像开发人员和像TortoiseSVN这样的GUI工具的人。
关于你的问题:
一些澄清:
主要发展是一种受欢迎的选择,但不是唯一可行的选择。它也可以是稳定的版本或任何你需要的版本。
Trunk不包含每个版本(存储库)。 Trunk包含提交到trunk的版本,就像任何其他目录一样。
保留标签版本的单独分支?然后你如何从标签(快照)告诉分支(实时)?
您永远不会在标签中工作,标签是不应更改的快照。关于主干/分支,它取决于它们包含的内容。
我怀疑您的项目没有版本,因此您没有找到有用的分支和标签。但是迟早你会想要启动一个需要很长时间才能完成的功能,并且会在代码库完成之前打破它。由于Subversions是一个集中版本控制系统,因此您只有两个选项:
trunk -> Work in progress for next version (2.0.2 or 2.1.0, to be decided)
branches
legacy-1.0.x
legacy-1.1.x
legacy-1.2.x
legacy-2.0.x
new-memory-management
storage-optimizations
tags
1.0.0
1.0.1
1.1.0
1.2.0
2.0.0-beta1
2.0.0-beta2
2.0.0
2.0.1
答案 1 :(得分:-1)
但是,如果我是你,我会问自己的主要问题是:首先学习SVN是个好主意吗?现在大多数人都使用Git或其他DVCS来更轻松,更快地处理分支。
如果我是你,我会学习git。