SVN - 当您标记工作副本时,它仍然是廉价副本吗?
-
25-09-2019 - |
题
使用 Subversion,在我的工作副本中进行了较小的修改(更新版本号)。然后我想标记我的工作副本。经过修改后,此标签仍然是廉价副本,还是 SVN 会复制文件?我不想看到我的存储库的大小急剧增加,因为我正在尝试保存版本号更改。
我询问创建包含修改的标签而不是提交然后标记的原因涉及我的构建服务器。构建服务器创建一个 CCNetLabel,我用它来更新项目的版本号 (AssemblyInfo.cs)。构建成功后,它会创建一个标签。当我使用 ForceBuild 时,标签基于包含修改后的版本号的工作副本。我希望标签包含适当的版本号。
笔记:如果我创建分支还是标签,这是有争议的,但是 SVN 并不区分两者。
解决方案
这取决于。如果你的工作副本是最新的(所有节点具有相同的版本),这只是便宜,因为从资源库中标注。
有关具有不同的修订比其父附加数据的每个文件/目录(或实际子树)将被添加。如果你有本地修改甚至更多的数据将被添加。
但它仍然是合理的便宜:它不重复那些已经在仓库中的任何文件
其他提示
从颠覆描述来看
- 分支和标记是廉价的(恒定时间)操作。这些操作没有理由昂贵,所以它们并不昂贵。分支和标签都是通过底层“复制”操作来实现的。 副本占用少量且恒定的空间。 任何副本都是一个标签;如果您开始提交副本,那么它也是一个分支。(这消除了 CVS 的“分支点标记”,因为首先消除了需要分支点标记的区别。)
笔记! 我刚刚注意到 颠覆 已移入Apache项目组织
创建的标签或在颠覆一个分支是很便宜。该文件将不会被复制。所有这一切发生的是一个新的版本将被创建,其内容基本上只包含一个指向其中标签是从复制。这将是项目的一个小文件或一用一百万大的标签尺寸相同。
当你说“的标签我的工作副本”,你的意思是“我的标签分公司的工作”?您只能已经提交到库中的某个地方的标签数据,而不是你的本地提交的更改。
相当过时的职位,但值得一提的任何人参观的答案说明你只能“你只能在已经提交到仓库标签数据......”承诺的工作并不完全准确的(至少不是现在)。
您可以标记一个工作拷贝,其中可能包含混合版本,甚至交换目录,以及本地修改。
至于便宜,是的,它应该仍然是便宜,因为Subversion会为你分支,然后覆盖你的工作拷贝变成回购,节省尽可能多的空间尽可能