SVN - 当你标记工作副本时,它仍然是一个廉价的副本?

mcd*_*don 6 svn tags branch working-copy

使用Subversion,在我的工作副本中我做了一个小修改(更新版本号).然后我想标记我的工作副本.这个标签仍然是修改的廉价副本,还是SVN会复制文件?我不愿看到我的存储库大小变大,因为我正在尝试保存版本号更改.

我要求创建包含修改而不是提交然后标记的标记的原因涉及我的构建服务器.构建服务器创建一个CCNetLabel,我用它来更新我的项目的版本号(AssemblyInfo.cs).构建成功后,它会创建一个标记.当我使用ForceBuild时,标记基于工作副本,该副本将包含修改后的版本号.我希望标签包含适当的版本号.

注意:如果我正在创建分支或标记,那么这是有争议的,但是SVN并没有区分这两者.

epa*_*tel 5

从颠覆描述

  • 分支和标记是便宜的(恒定时间)操作.这些操作没有理由是昂贵的,所以它们不是.分支和标签都是根据底层的"复制"操作实现的.副本占用一小块恒定的空间.任何副本都是标签; 如果你开始提交副本,那么它也是一个分支.(这消除了CVS的"分支点标记",通过消除首先需要分支点标记的区别.)

注意!我刚刚注意到Subversion已经进入了Apache项目组织


Ber*_*ben 5

这取决于。如果您的工作副本是最新的(所有节点都具有相同的修订版),则它与从存储库中进行标记一样便宜。

对于版本与其父版本不同的每个文件/目录(或实际上是子树),将添加其他数据。而且,如果您进行了本地修改,则将添加更多数据。

但这仍然很便宜:它不会复制存储库中已经存在的任何文件。