2011-11-21 51 views
3

当我从现有存储库签出项目时,会创建三个文件夹:branches,tagstrunk标签目录是否与SVN中的源代码重复?

我把我的源代码在trunk目录:

trunk 
    |--include 
    |--src 
    |--lib 
    |--bin 
    |--build 
    |--doc 

但似乎我当我完成一个版本的项目,我应该把它的一个副本中tags目录(如标签> MY_PROJECT -1.0.0)。

标签目录是否与SVN中的源代码重复?或者我做错了什么?

我的意思是我应该保存所有先前的源代码在tag目录或者我应该保存最新trunk目录版本,而在其他文件夹中任何重复?

回答

3

它不会复制存储,不。 SVN将其数据有效地存储为版本化文件系统树加上一桶文件数据,而trunk/include/abc.h将指向与tags/myTag/include/abc.h相同的文件数据。

现在有两条途径可以访问代码的相同副本,但是,标签版本将固定在您创建副本的版本中。在继续提交到trunk/include/abc.h时,tags/myTag/include/abc.h将保持不变。也就是说,你可以随时通过修改版本号来引用主干上的代码版本:你可以在发布版本1.0.0 = trunk @ 12345的地方写下代码。也就是说,标记是记住这一点的一种更简单的方法,并且将包含将它们链接回到您复制它们的特定中继版本的元数据。

您的最新编辑:我不是100%确定您的意思是“所有以前或最新”,但您应该保存您实际发布的版本。您可能还想从您的发行版创建稳定的分支,以便您可以从相同版本的代码而不是中继修复发行版。没有(或很少)存储空间用于标记干线上的所有内容。如果你的意思是你可以访问从标签开始的文件的提交日志,那么是的,你可以 - 标签有效地包含了该点的所有历史记录。


D'噢,对不起,刚刚发现这一点:

当我结帐从现有的资源库中的项目,三个文件夹创建:分支,标签和主干。

不 - 你只需要检查中继线或你正在工作的分支。你不应该检查整个事情,不,或者你会得到在你的磁盘上重复的一切。检出版本库的根目录是个不错的主意,甚至可以安装subversion版本的apache插件来明确禁止它。

+0

谢谢,我想我找到了我的答案,我的错误是检查存储库的根目录。正确的方法是检查'trunk'。 –

1

SVN中的标签只是一个命名版本,即r1000内部命名为'1.0.0'。

,所以如果你在本地检出标签,将会得到如下:

branches 
tags 
    |--1.0.0 
    |--include 
    |--src 
    |--lib 
    |--bin 
    |--build 
    |--doc 
trunk 
    |--include 
    |--src 
    |--lib 
    |--bin 
    |--build 
    |--doc 

,但将占用的磁盘空间只有一次(在服务器上),两次 - 您的本地磁盘上

相关问题