4

最近我们创建了项目主干的第一个分支。主干相当大(几个 GB),这对服务器来说并不重要,因为分支是通过那里的有效链接建立的。然而,在客户端工作副本中,该项目现在确实占用了两倍的空间(我们所有的 WC 都来自存储库根目录)。

既然只有少数人真正需要分支,其他人怎么能忽略(即不下载)所有使用 TortoiseSVN 的分支?

如下所示,用户只签出中继不是这里的解决方案。我们的结构是这样的:

/
 projects
  project-x
   assets
    blabla.psd
   code
    trunk
    branches
     branch1
     branch2
  project-y
   ...
4

5 回答 5

6

简短的解决方案 - 切换到 /trunk。除了trunk之外不需要其他任何东西的人都可以从/root/trunk而不是/root签出。任何想要分支的人都应该在另一个目录中签出分支。

更精细的解决方案 - 仅检查您需要的内容,但保持树状结构。如果您既希望自由拥有一切,又希望只使用您想要的自由,请按照以下步骤操作:

  1. 使用“仅限直系子女”选项从根结帐
  2. 使用“完全递归”选项从根/主干结帐

如果有人想要签出一些特殊的分支,那么在前两个步骤之后:

  • 使用“仅限直系子女”选项从根/分支结帐
  • 使用“完全递归”选项从该特殊分支结帐

您可以在 SVN 好书“稀疏目录”一章中找到有关该主题的更多信息。

这个过程没有捷径可以挑选树枝。除了批处理文件和TortoiseProc

编辑:如果您已经签出了整个存储库,并且现在您想排除某些内容以节省空间,请在要排除的文件夹上使用命令“更新项目以修订”,并使用结帐部门“排除”。根据手册,此选项仅在更新到修订对话框中可用。我想这只是为了这个目的。

首先在临时工作副本上尝试这个。我从来没有亲自这样做过。

更新:从 TortoiseSVN 1.7 结帐对话框有一个按钮“选择项目”,使您能够只选择想要的文件夹并在一个步骤中获取它们。“将项目更新到修订版”对话框中也提供相同的按钮。

于 2010-11-28T13:39:31.950 回答
6

(从您的工作副本的根目录)

find . -name branches -exec svn update --set-depth empty {} \;

这将从您的工作副本中删除所有分支,并且未来的更新将不会下载它们。想要查看分支的开发人员随后可以:

svn update --set-depth infinity branches\my-feature-branch
于 2013-11-12T23:52:36.373 回答
1

我希望你有这样的结构:

repo root
  |
  +-- trunk
  |
  +-- branches
         |
         +-- branch1
         +-- branch2
         +-- ...

如果是这种情况,那么用户可以简单地 checkouthttp://server/repo/trunk而不是http://server/repo,当他们想要在分支上工作时,他们可以将他们的工作副本切换到http://server/repo/branches/branch1.

于 2010-11-28T13:35:16.493 回答
1

右键单击您不想要的文件夹,然后转到“更新到修订版...”。在弹出的对话框中,将更新深度设置为“排除”。(注意,这似乎只适用于文件夹。)这将从您的工作副本中删除它,但不会影响存储库。Tortoise 只会知道在更新期间不要尝试更新它。

为了撤消它,您可以右键单击父文件夹(或其父文件夹等)并选择“Repo Browser”。找到排除的文件夹,右键单击并选择“将项目更新到修订版”。你会得到同样的对话框;这一次,只要确保它显示“工作副本”

在 TortoiseSVN 中撤消签出子文件夹

于 2012-12-28T01:33:10.373 回答
0

如果人们必须将资产与代码一起下载,那么在 project-x 级别上进行分支更为自然。在这种情况下,您将不会遇到您描述的问题。你有什么理由只分支你的部分东西吗?

于 2012-07-04T14:36:25.377 回答