使用TortoiseSVN同步文件夹

4

我正在使用TortoiseSVN/SVN时遇到一些问题,涉及工作文件夹和.SVN文件夹。

假设我有以下结构:

trunk/
     src/
     sdk/
     lib/

如果我想要检查src文件夹和sdk文件夹,但不包括lib文件夹,如果我分别对这两个文件夹进行checkout,.SVN文件夹将分别位于src/和sdk/下。
那么,我该如何将/trunk/文件夹本身放入源代码控制中?如果我做一个checkout,它将检出包括lib文件夹在内的所有内容,除非我限制深度,在这种情况下,它将不知道任何子文件夹。
实际上,我需要一种同步文件夹的方法。
有什么建议吗?
谢谢!
4个回答

7
  1. 使用TortoiseSVN检出父目录
  2. 选择“完全递归”深度
  3. 单击“选择项目”,取消选中不想检出的文件夹
  4. 点击确定。

如果您已经检出了父目录,并且想更改您已检出的文件夹子集,右键单击父文件夹,选择“TortoiseSVN | 更新到修订版本...”。在此窗口中,您可以选择“选择项目”并取消选中您不再需要的文件夹。


不知道这个。 应该是在幕后使用稀疏目录? - crashmstr
这就是它的工作原理。我包含了这个答案,因为他特别寻找使用TortoiseSVN的方法。 - Sam Johnson

1

我个人没有使用这个功能,但Subversion支持“稀疏目录”。

在我们的例子中,我们只对工作副本的根目录进行操作,改变其环境深度值。但是,我们也可以独立地改变任何一个子目录在工作副本内的环境深度值。仔细地利用这种能力可以让我们仅填充工作副本树的某些部分,让其他部分完全不存在(因此这个特性的名称里有“稀疏”的一部分)。下面是一个示例,说明了如何构建我们家族树的一个分支的一部分,启用另一个分支的完全递归,并同时保持其他部分被修剪而未出现在磁盘上。

您可以在svnbook条目Spare Directories中了解更多信息。


是的,这对于进行干净的检出时有效,尽管它并不能完全帮助那些想要避免检出20GB代码的人;) 哎呀。 - Jordan
它确实有助于避免这种情况 - 请参见下面的答案。 - Sam Johnson
@Jordan 20GB?这怎么可能进入SVN呢? - jrummell

1
我知道使用Tortoise最简单的方法是创建一个同名的空目录,然后右键单击它并选择“取消版本控制并添加到忽略列表”从tortoise svn列表项中,这将使任何后续更新都忽略此文件夹。我经常用编译代码来做...最好先全部拉进来,然后将你不想要的文件夹添加到忽略列表中再将它们删除。

根据他们的网站,您应该能够将某些内容从忽略列表中删除。但是,在某些系统上似乎存在一些问题,它只在我的四分之三机器上运行正常。至于添加父代,则没有办法在不检出干净副本的情况下完成。我试图对其进行封装,但它一直抱怨我试图使用的目录已经拥有一个工作副本。 - feldoh
如果您只想進行一次更新,可以選擇“Tortoise SVN” -> “更新到版本”,然後使用選擇項按鈕取消選擇您不需要的項目。 - feldoh
根据我收到的状态消息,我认为它使用了crashmstr所提到的“稀疏目录”。 - feldoh
是的,我想这与稀疏目录差不多。谢谢。看起来我应该在父目录上进行checkout/update,但将深度设置为“立即”,然后对我想要的文件夹进行更新,并将深度设置为无限。有点麻烦,但我想那就是解决方案。 - Jordan
Jordan,你应该可以在一步中完成这个操作。检出父目录,在TortoiseSVN Checkout窗口中选择“完全递归”深度,然后单击“选择项目”,取消选中你不想检出或更新的文件夹即可。 - Sam Johnson
显示剩余3条评论


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接