0

自从我上次使用 SVN 以来已经有一段时间了。在我签出的本地副本中\myproject\,有一些子目录是我的 IDE 生成的\bin\,但是在签出 SVN has created\trunk\之后,\branch\等等。

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

4

1 回答 1

4

trunk,tags并且branches 是标准的 Subversion目录。幸好你没有填满你的磁盘驱动器,检查整个 repo 和所有分支。

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

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

缺点是人们会不小心检出所有分支(以及在 Subversion 的情况下)所有标签,而主干会永远占用并阻塞用户的磁盘。另一个缺点是语法比较时髦。

比较 1.34 分支和 1.35 分支的 CVS 语法:

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

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

$ 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,我可能会做同样的事情。但是,这检查了主干和所有已创建的分支,以及所有已创建的标签。这可能需要很长时间才能结帐并堵塞您的磁盘。如果我对我的存储库执行此操作,我的 500 GB 硬盘驱动器上将有大约 3 或 4 TB 的数据。您可以看到这会导致一些磁盘空间问题。

如果要检出主干,则需要在检出命令中包含 Subversion URL 的那部分:

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

如果你想签出 1.34.2 分支,你可以在你的签出命令的 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

希望这能澄清你的情况。

于 2013-09-10T02:05:27.357 回答