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

SVN-当你标记一个工作副本时,它仍然是一个便宜的副本吗?,svn,tags,branch,working-copy,Svn,Tags,Branch,Working Copy,使用Subversion,我在我的工作副本中做了一个小的修改(更新版本号)。然后我想标记我的工作副本。这个标签经过修改后仍然是一个便宜的副本,还是SVN会复制文件?我不想看到我的存储库在规模上大幅增长,因为我正试图保存版本号更改 我询问创建包含修改的标记而不是提交标记的原因涉及到我的构建服务器。构建服务器创建一个CCNetLabel,我用它来更新我的项目(AssemblyInfo.cs)的版本号。构建成功后,它将创建一个标记。当我使用ForceBuild时,标记基于工作副本,其中包含修改后的版本

使用Subversion,我在我的工作副本中做了一个小的修改(更新版本号)。然后我想标记我的工作副本。这个标签经过修改后仍然是一个便宜的副本,还是SVN会复制文件?我不想看到我的存储库在规模上大幅增长,因为我正试图保存版本号更改

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


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

在subversion中创建一个标记或一个分支是非常便宜的。这些文件将不会被复制。所发生的一切就是将创建一个新的修订,其内容基本上只包含一个指向复制标记的位置的指针。对于一个有一个小文件的项目标记,或者对于一个有一百万个大文件的项目标记,这个大小是相同的


当你说“标记我的工作副本”时,你的意思是“标记我的工作分支”?您只能标记已提交到存储库某处的数据,而不能标记本地未提交的更改。

来自subversion描述

  • 分支和标记是廉价的(固定时间)操作。 没有理由让这些操作变得昂贵,所以它们不是。 分支和标记都是根据底层“复制”操作实现的。副本占用的空间较小且恒定。任何副本都是标签;如果您开始提交副本,那么它也是一个分支。(这消除了CVS的“分支点标记”,首先消除了使分支点标记成为必要的区别。)

注意!我刚刚注意到它已经被转移到Apache项目组织中,这要看情况而定。如果您的工作副本是最新的(所有节点都有相同的修订版),那么它与存储库中的标记一样便宜

对于版本不同于其父级的每个文件/目录(或实际子树),将添加额外的数据。如果您有本地修改,将添加更多数据


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

这是一篇相当过时的帖子,但值得一提的是,对于任何访问过它的人来说,答案是只能“只能标记已经提交到存储库中的数据…”提交的工作并不完全准确(至少现在没有)

您可以标记一个工作副本,其中可能包含混合修订,甚至切换目录以及本地修改


至于便宜,是的,它应该仍然便宜,因为Subversion将为您分支,然后将您的工作副本更改覆盖到repo中,尽可能节省空间

我的意思是标记我的工作副本。过程将是:svn更新,更新工作副本中的版本号,从工作副本生成标记。目标是保存更新的版本标记中的离子信息(分支加上版本号的修改)。很好,我担心它可能会复制所有文件。听起来标记工作副本几乎不会比标记服务器上的分支大。现在,如果我能告诉Cruise Control.net始终标记我的工作副本…如果我有目录“a”在我的工作副本中,我标记了它。我知道这将是存储库中的廉价副本。但是,稍后我会从我的工作目录中删除“a”。廉价副本会发生什么?它仍然有“a”可用吗?