如何在Subversion中制作标签?

时间:2008-09-02 16:35:10

标签: svn

我知道如何在subversion中使用标签。每次进入发布里程碑时,我都会创建一个标记。

我不太明白它们是如何工作的。

标签只是一个副本,是根据我指定的修订版制作的吗?或者标签更像是一个参考,其中内部颠覆只是说GO TO /trunk/project/ Revision 5或其他什么。

创建标记(svn copy)的命令似乎意味着它是一个副本,但我看到其他人写道,subversion并没有真正复制任何内容。

假设我只转储存储库的HEAD版本。除了标签,我不关心任何历史。这些标签是否与Head版本的其余部分一起转储?

最后,这一切只是编程魔术,我真的不想知道。

6 个答案:

答案 0 :(得分:12)

是的,svn副本(无论您将其视为标记,分支还是在主干中复制文件)都是一样的。 SVN将在内部创建指向该修订版的源位置的指针。如果你随后对副本进行了更改(如果它是一个分支或者在trunk中复制的文件你可能会做,但不应该对标签做),SVN只会存储更改的内容,而不是创建一个全新的副本。

答案 1 :(得分:4)

Subversion的书籍是完整且免费的在线形式:   http://svnbook.red-bean.com/en/1.4/svn-book.html#svn.branchmerge.tags

是的,你基本上做了svn副本。 Subversion非常智能,可以执行写时复制样式机制,以节省空间并最大限度地缩短传输时间。

答案 2 :(得分:3)

是的,标签只是一个副本:

svn copy trunk tags/BLAH

当人们说SVN没有真正复制任何东西时,他们意味着存储库不需要复制数据。它使用类似于符号链接的东西来跟踪副本。

答案 3 :(得分:2)

TortoiseSVN help解释得非常好:

  

Subversion没有用于分支或标记的特殊命令,而是使用所谓的“廉价副本”。廉价副本类似于Unix中的硬链接,这意味着不是在存储库中创建完整副本,而是创建指向特定树/修订版的内部链接。因此,分支和标签可以非常快速地创建,并且几乎不占用存储库中的额外空间。   [...]   如果修改从分支创建的工作副本并提交,则所有更改都将转到新分支而不是主干。仅存储修改。其余的仍然是一个廉价的副本。

答案 4 :(得分:1)

标签是对标签拍摄时的一组修订号的引用 - 它与内部的分支或副本相同。

答案 5 :(得分:0)

一个例子:

$ svn copy https://jorgesysgr.com/svn/AndNews/branches \
           https://jorgesysgr.com/svn/AndNews/tags/release-1.1 \
           -m "release 1.1 Android News."

更多信息:: Creating a Simple Tag