自从我上次使用SVN以来已经有一段时间了。在我签出的本地副本\myproject\
中,我的IDE生成的子目录如\bin\
,但在签出后SVN创建了\trunk\
,\branch\
等等。< / p>
我看起来有点乱。我宁愿将所有文件与这些子目录分开;这是常态吗?如果没有,除了将我自己的所有文件转储到另一个子目录\dev\
之外,我还能做些什么来改变它吗?
答案 0 :(得分:4)
trunk
,tags
和branches
是标准的Subversion 目录。好的,你没有填满你的磁盘驱动器检查整个回购,以及所有分支。
Subversion使用所谓的Inter-File Branching。所有这些意味着分支在存储库中是字面上的目录,而不是文件上的某种元数据。优点包括可见分支名称(您可以通过svn ls
轻松查看所有分支),版本控制的完整元数据功能(您可以看到谁创建了分支,何时,为什么以及从何处创建),以及它意味着分支整个项目而不是每个文件分支方案。
另外,与其他版本控制元素一样,您可以删除分支而不会破坏它。这意味着您可以删除过时的分支(或者如果您愿意,可以将它们移动到过时的目录),并且列出的分支只是当前和活动分支。您还可以使用 hooks 来控制分支。
缺点是人们会不小心检查所有分支(以及在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,我可能会做同样的事情。但是,这检查了 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
希望这能澄清你的情况。