在SVN检出中跳过目录?(部分检出)

15
假设有一个远程的 SVN 仓库,它的结构如下所示:
/project
        /src
        /bulk

有些原因我已经在电脑上有一份未更改或极少更改的bulk副本。我能否以某种方式检出一个新的仓库副本,但预先提供bulk目录以便它不会再次被下载?

需要澄清的是,这个假设的过程应该检查bulk目录中文件的校验和,并更新那些校验和不正确的文件,以便最终我将拥有完整、一致的检出。我只想快捷地跳过那些我已经完全拥有的文件的下载。


我不这么认为,但更重要的是,这会导致你的svn仓库不再具有权威性。此外,其他人(包括你未来的自己-在另一台机器上)没有现在的魔法批量,怎么办?什么是批量?数据,第三方库,这可能会帮助我们指导您采取最佳实践。 - Steve Robillard
@SteveRobillard:魔法批量是存储库的一部分(比如说它是一组声音轨文件)。我只是已经下载了这些文件,并且想要利用它们。我非常高兴进行校验和验证等操作! - Kerrek SB
类似于https://dev59.com/vHVC5IYBdhLWcg3ww0Dr - Paul Verest
3个回答

27
  1. 指定深度为“empty”检出/project。
  2. 指定无限深度更新/project/src。
  3. 将当前批量工作副本复制到项目目录工作副本中。

例如:

svn checkout --depth empty http://svnserver/project/ project
svn update --set-depth infinity project/src
// copy your current /bulk into /project

注意 - 这利用了Subversion 1.5中引入的稀疏目录功能。


2
你能再详细解释一下吗?因为我是一个完全不懂 SVN 的新手。 :-) - Kerrek SB
如果/bulk没有改变,并且您不打算从存储库中检出它,则无需将其放在存储库中。只需将/src文件夹保留在存储库中即可。 - user684934
@KerrekSB 快点,现在是跳过 SVN 转向 Hg/Git/Foo 的好机会!;-) - user166390
1
要查看树形结构,包括空的子目录:svn checkout --depth immediates http://svnserver/project/ project ... 然后进入所需目录并在空的子目录中执行 svn update --set-depth infinity - stevesliva
@stevesliva immediates - 不错的提示 - Adam Ralph
显示剩余4条评论

1

使用 TortoiseSVN 1.7 或更新版本时的指令:

  1. 将 "SVN Checkout" 设置为 /project,并将 "Checkout Depth" 设置为 "Only this item"
  2. 将 "SVN Checkout" 设置为 /project/trunk,并将 "Checkout Depth" 设置为 "Fully recursive"

-1
上一次我需要这样做的时候,有大量的演示文件在一个目录中,所以我将它们移到了一个新的目录中而不是trunk目录。
如果你需要bulk在同一个目录中,你可以考虑类似的做法,并将bulk添加到svn:ignore中。

那么你的意思是我应该将bulk从版本控制中解耦,只在本地机器上使用我的本地副本?我猜这是一个变通方法,虽然我真的希望能够用本地文件来“种子化”我的检出。 - Kerrek SB
不,bulk 仍将保留在版本控制中,但不会在 trunk 中。这样你就可以避免大量的检出。 - Steve Rukuts

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