保持SVN本地副本清洁 - 我做错了吗?

时间:2013-09-09 23:48:04

标签: svn tortoisesvn

自从我上次使用SVN以来已经有一段时间了。在我签出的本地副本\myproject\中,我的IDE生成的子目录如\bin\,但在签出后SVN创建了\trunk\\branch\等等。< / p>

我看起来有点乱。我宁愿将所有文件与这些子目录分开;这是常态吗?如果没有,除了将我自己的所有文件转储到另一个子目录\dev\之外,我还能做些什么来改变它吗?

1 个答案:

答案 0 :(得分:4)

trunktagsbranches是标准的Subversion 目录。好的,你没有填满你的磁盘驱动器检查整个回购,以及所有分支。

Subversion使用所谓的Inter-File Branching。所有这些意味着分支在存储库中是字面上的目录,而不是文件上的某种元数据。优点包括可见分支名称(您可以通过svn ls轻松查看所有分支),版本控制的完整元数据功能(您可以看到谁创建了分支,何时,为什么以及从何处创建),以及它意味着分支整个项目而不是每个文件分支方案。

另外,与其他版本控制元素一样,您可以删除分支而不会破坏它。这意味着您可以删除过时的分支(或者如果您愿意,可以将它们移动到过时的目录),并且列出的分支只是当前和活动分支。您还可以使用 hooks 来控制分支。

缺点是人们会不小心检查所有分支(以及在Subversion情况下)所有标记,以及永远占用用户磁盘的主干。另一个缺点是语法对于比较来说有点复杂。

用于将1.34分支与1.35分支进行比较的CVS语法:

$ cvs rdiff -rBR_1.34 -rBR_1.35 $repo_name

SVN语法将1.34分支与1.35分支进行比较:

$ svn diff http://svn.vegicorp.com/svn/branches/1.34 http://svn.vegicorp.com/svn/branches/1.35

你可以用一些环境变量缩短这个:

$ REPO=http://svn.vegicorp.com/svn
$ svn diff $REPO/branches/1.34 $REPO/branches/1.35

但是,你仍然可以看到它打字更多。您不必仅指定两个分支名称,而是必须指定两个完整的存储库URL。

让我们回到你的错误:你做的是这样的事情:

$ svn co http://svn.vegicorp.com/svn 

因为有人告诉您存储库位于http://svn.vegicorp.com/svn。如果我不知道Subversion,我可能会做同样的事情。但是,这检查了 trunk 和所有已创建的分支以及所有已创建的标记。这可能需要永远检查并阻塞您的磁盘。如果我使用我的存储库执行此操作,我的500 GB技术硬盘上将有大约3或4 TB的数据。您可以看到这会导致一些磁盘空间问题。

如果要结帐中继线,则需要在结账命令中包含Subversion URL的那部分:

svn co http://svn.vegicorp.com/svn/trunk

如果你想查看1.34.2分支,你可以在checkout命令的Subversion URL中包含它:

$ svn co http://svn.vegicorp.com/svn/branches/1.34.2

请注意,URL不仅包括存储库名称,还包括要签出的分支或中继。

您也可以签出特定代码。假设您要查看4.3版本:

$ svn co http://svn.vegicorp.com/svn/tags/4.3

如果您希望查看所有分支的列表(如果您的网站修剪分支时它们已过时),则会显示所有分支的列表:

$ svn list http://svn.vegicorp.com/svn/branches

希望这能澄清你的情况。