svnant:如何从存储库签出指定的URL?

svnant:如何从存储库签出指定的URL?,svn,ant,Svn,Ant,大家好: 我正在使用SVNant签出一个存储库,存储库的总内容非常大,我只对几个文件和目录感兴趣,存储库结构如下: project folder1 folder2 largefolder largefile1 largefile2 folder3 fileilike1.txt fileilike2.txt file.txt file2.txt etc... 我只

大家好: 我正在使用SVNant签出一个存储库,存储库的总内容非常大,我只对几个文件和目录感兴趣,存储库结构如下:

project
   folder1
   folder2
      largefolder
          largefile1
          largefile2
      folder3
          fileilike1.txt
          fileilike2.txt
   file.txt
   file2.txt
   etc...
我只对project/folder下的文件感兴趣,比如file.txt和file2.txt,还有folder3下的所有文件。我不想签出largefolder/,因为它有超大文件


如何编写svnant脚本?我使用了ignore,但似乎不起作用。

我没有使用“svnant”,但我认为它应该类似于“svn”

以下是如何在svn中执行此操作

svn co project -N
-N强制只签出顶级文件(即仅项目目录中的文件)

然后检查单个目录

svn up dir1 dir2 dir3
当您想要更新代码库时,分两步进行

svn up -N
svn up

虽然您可以在更新时配置以避免上面提到的步骤1,但是上面的步骤对您来说应该很好。

如果签出必须如此复杂,也许您可以重新设计项目结构。这些实际上是多个项目吗?我希望您在布局中有分支、标记和主干文件夹,但为了简洁起见选择不列出它们?

您可以使用不同深度的组合来选择工作目录中需要的内容:

#
# First checkout your URL with the immediate files and directories in it
#
$ svn co --depth immediates $URL mydir
A folder1
A folder2
A file.txt
A file2.txt

#
# Let's Update All Folders to infinity except folder2
#
$ shopt -s extglob
$ svn update --set-depth infinity !(folder2)
A folder1/...
A folder3/...
$ cd mydir

#
# Now We'll get immediates under folder2
#
$ cd folder2
$ svn update --set-depth immediates
A largefolder
A folder3

#
# Now we'll exclude largefolder
#
$ svn update --set-depth exclude largefolder
D largefolder

#
# And get everything else in the view
#
$ svn update --set-depth infinity *  # Large Folder Excluded
A [...]
$ cd ..
--depth
--set depth
开关是相当新的,它取代了停止递归的
-N
开关


您不必保留
largefolder
,只需保留
largefolder
,只需对可能需要更新的特定文件执行
svn update
。工作目录中有内容后,
svn up
将保持更新。但是,您必须小心,因为除非您执行
svn设置-设置深度
,否则不会添加新文件和目录。

感谢您的回复,您的解决方案激励我尝试多次签出,每次只签出我需要的文件夹。它起作用了。谢谢,您必须再次使用“up”命令才能获得所选目录。你以前用过“co”或“checkout”吗?