代码之家  ›  专栏  ›  技术社区  ›  Grant

标签是如何在Subversion中制作的?

svn
  •  14
  • Grant  · 技术社区  · 16 年前

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

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

    标签只是我指定的版本的副本吗?或者标签更像一个引用,而内部subversion只是说 GO TO /trunk/project/ Revision 5 或者别的什么。

    用于创建标记的命令( svn copy )似乎暗示这是一个副本,但我看到其他人写,颠覆并不真正复制任何东西。

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

    6 回复  |  直到 16 年前
        1
  •  12
  •   pkaeding    16 年前

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

        2
  •  4
  •   nsanders    16 年前

    http://svnbook.red-bean.com/en/1.4/svn-book.html#svn.branchmerge.tags

    是的,你基本上做了一个svn拷贝。Subversion足够聪明,可以使用写时拷贝样式的机制来节省空间并最小化传输时间。

        3
  •  3
  •   Charles Duffy    16 年前

    对,标记只是一个副本:

    svn copy trunk tags/BLAH
    

    当人们说SVN实际上不复制任何东西时,他们的意思是存储库不需要复制数据。它使用类似于符号链接的东西来跟踪副本。

        4
  •  2
  •   Christian    11 年前

    这个 TortoiseSVN help 很好地解释了这一点:

    [...] 如果修改从分支创建的工作副本并提交,则所有更改都将转到新分支而不是主干。仅存储修改。其余的都是廉价的。

        5
  •  1
  •   Tim Howland    16 年前

        6
  •  0
  •   Jorgesys    11 年前

    例如:

    $ 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