最近我们制作了项目主干的第一个分支。中继线相当大(几个GB),这对服务器来说无关紧要,因为分支是通过高效链接在那里完成的。然而,在客户端工作副本中,项目现在确实占用了两倍的空间(我们所有的WC都来自存储库根目录)。
由于只有少数人真正需要分支,其他人如何使用TortoiseSVN忽略(即不下载)所有分支?
如下所示,仅检查中继线的用户不是此处的解决方案。我们的结构是这样的:
/
projects
project-x
assets
blabla.psd
code
trunk
branches
branch1
branch2
project-y
...
答案 0 :(得分:6)
简短解决方案 - 切换到/ trunk。所有除了trunk之外不需要任何其他东西的人都可以从/ root / trunk而不是/ root签出。任何想要分支的人都应该检查另一个目录中的分支。
更精细的解决方案 - 只检查您需要的内容,但保留树结构。如果您希望自由拥有它,并且只使用您想要的那些,那么请按照以下步骤操作:
如果有人想要检查一些特殊分支,那么在前两个步骤之后:
您可以在SVN好书“Sparse Directories”一章中找到有关该主题的更多信息。
这个程序没有捷径来挑选分支。批处理文件和TortoiseProc除外。
编辑:如果您已经检出了整个存储库,现在要排除某些内容以节省空间,请在要使用checkout dept“Exclude”排除的文件夹上使用命令“Update item to revison”。根据{{3}},此选项仅在“更新到修订版本”对话框中可用。我想这只是为了这个目的。
首先尝试临时工作副本。我个人从未这样做过。
更新:从TortoiseSVN 1.7 Checkout对话框有一个“选择项目”按钮,使您可以只选择想要的文件夹并一步获取它们。 “更新项目到修订版本”对话框中也提供了相同的按钮。
答案 1 :(得分:6)
(来自工作副本的根目录)
find . -name branches -exec svn update --set-depth empty {} \;
这将删除工作副本中的所有分支,并且将来的更新将不会下载它们。 希望看到分支的开发人员可以随后:
svn update --set-depth infinity branches\my-feature-branch
答案 2 :(得分:1)
我希望你有这样的结构:
repo root
|
+-- trunk
|
+-- branches
|
+-- branch1
+-- branch2
+-- ...
如果是这种情况,则用户只需结帐http://server/repo/trunk
而不是http://server/repo
,当他们想要在分支上工作时,他们可以将工作副本切换为http://server/repo/branches/branch1
。
答案 3 :(得分:1)
右键单击您不想要的文件夹,然后转到“更新到修订版本...”。在弹出的对话框中,将“更新深度”设置为“排除”。 (注意,这似乎只适用于文件夹。)这将从您的工作副本中删除它,但不会影响存储库。 Tortoise只会知道不会在更新期间尝试更新它。
要撤消它,您可以右键单击父文件夹(或其父文件夹,依此类推),然后选择“Repo Browser”。找到排除的文件夹,右键单击并选择“将项目更新到修订版”。你会得到同样的对话;这一次,只要确保它说“工作副本”
答案 4 :(得分:0)
如果人们必须将资源与代码一起下载,那么在project-x的级别上进行分支会更自然。在这种情况下,您不会遇到您描述的问题。你有什么理由只分支你的部分东西吗?