SVN:分支上的版本号

5

关于SVN分支的修订号,有几个问题我不是很清楚:

  1. 当我创建一个分支时,该分支是否会有自己的修订号?
  2. SVN如何处理分支的修订号?分支是否有自己独立于主干和其他分支的修订号序列?还是整个SVN服务器只有一个单一的序列编号?为了澄清,请解释在分支上提交时会发生什么。
2个回答

11
当我创建一个分支时,该分支是否会获得其自己的修订号?
不会。整个仓库只有一个全局的修订号。
创建分支的提交将获得一个修订号。
请解释一下,在分支上进行提交时会发生什么。
Subversion本身并没有特别支持或理解分支。这都是基于如何在目录结构中布置文件的惯例。
因此,在“trunk”上提交文件和在“branch”上提交文件之间没有区别。实际上,同一提交可以更改许多分支中的文件。
在Subversion内部创建分支和复制目录之间没有区别。我们(作为用户)只是赋予它不同的含义。
“标签”也是同样的道理。它们只是您在另一个目录中移动的某个特定时间的代码副本(就像一个分支),您打算保留它们而不再对其进行任何更改(但Subversion本身不强制执行)。

你提到了“创建分支的提交将获得一个修订号。”你的意思是说分支本身的创建被视为一个提交吗?但我们并没有提交任何新文件,那么为什么它会被视为一个提交呢? - user1888243
创建一个分支意味着“将目录(通常是主干)复制到另一个位置(通常是branches/foo)”。对于Subversion来说,这只是一个普通的提交。你甚至可以将其与其他操作结合使用(但不建议这样做)。 - Thilo
"但我们没有提交任何新文件": 你可能已经创建了很多新文件,例如“branches/foo/VERSION.txt”,“branches/foo/src/main/java/x/A.java”等(作为现有文件的副本)。你甚至可以更改或重新排列其中一些文件,也许在某些地方提高版本号。 - Thilo

3
  1. 是的。修订号属于代码仓库,每个提交都有自己的修订号。

  2. 分支只是代码仓库中的一个子文件夹。它会获得与整个仓库唯一的修订号,就像其他子文件夹一样。当您向分支提交时,它的工作方式与向仓库的任何其他文件夹提交一样。


分支本身(我是指创建分支时)是否会获得新的修订号?创建分支本身是否被视为提交? - user1888243
是的,创建一个分支(复制一个文件夹)就是一次提交,并且会得到一个修订号。 - Blorgbeard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接