自从我上次使用 SVN 以来已经有一段时间了。在我签出的本地副本中\myproject\
,有一些子目录是我的 IDE 生成的\bin\
,但是在签出 SVN has created\trunk\
之后,\branch\
等等。
对我来说,它看起来有点乱。我宁愿我的所有文件都与这些子目录分开;这是常态吗?如果没有,除了将我自己的所有文件转储到另一个子目录之外,我还能做些什么来改变它\dev\
?
自从我上次使用 SVN 以来已经有一段时间了。在我签出的本地副本中\myproject\
,有一些子目录是我的 IDE 生成的\bin\
,但是在签出 SVN has created\trunk\
之后,\branch\
等等。
对我来说,它看起来有点乱。我宁愿我的所有文件都与这些子目录分开;这是常态吗?如果没有,除了将我自己的所有文件转储到另一个子目录之外,我还能做些什么来改变它\dev\
?
trunk
,tags
并且branches
是标准的 Subversion目录。幸好你没有填满你的磁盘驱动器,检查整个 repo 和所有分支。
Subversion 使用所谓的文件间分支。这意味着分支实际上是存储库中的目录,而不是文件中的某种元数据。优点包括可见的分支名称(您可以通过 轻松查看所有分支svn ls
)、版本控制的完整元数据功能(您可以看到谁创建了分支、何时、为什么以及从何处创建分支),这意味着分支整个项目而不是每个文件分支方案。
另外,与其他版本控制元素一样,您可以删除分支而不破坏它。这意味着您可以删除过时的分支(或者,如果您愿意,将它们移动到过时的目录中)并且列出的分支将只是当前和活动的分支。您还可以使用挂钩来控制分支。
缺点是人们会不小心检出所有分支(以及在 Subversion 的情况下)所有标签,而主干会永远占用并阻塞用户的磁盘。另一个缺点是语法比较时髦。
$ cvs rdiff -rBR_1.34 -rBR_1.35 $repo_name
$ 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
希望这能澄清你的情况。