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

时间:2010-12-31 08:28:49

标签: svn ant

大家好: 我正在使用SVNant来检查存储库,整个存储库内容是如此之大,我只对几个文件和目录感兴趣,存储库结构如下:

project
   folder1
   folder2
      largefolder
          largefile1
          largefile2
      folder3
          fileilike1.txt
          fileilike2.txt
   file.txt
   file2.txt
   etc...

我只对项目/文件夹下的文件感兴趣,例如file.txt和file2.txt,以及文件夹3下的所有文件。我不想签出largefolder /因为它有超大文件。

如何编写svnant脚本?我使用忽略但似乎不起作用。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

以下是在svn

中执行此操作的方法
svn co project -N

-N强制只检出顶级文件(即仅项目目录中的文件)

然后查看个别目录

svn up dir1 dir2 dir3

如果要更新代码库,请分两步完成

svn up -N
svn up

虽然您可以配置为在更新时避免上述步骤1,但上述内容对您来说应该完全正常。

答案 2 :(得分:0)

您可以使用各种深度的组合在工作目录中选择所需内容:

#
# 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 <file>执行您可能需要更新的特定文件。一旦某些内容出现在您的工作目录中,svn up将保持更新。但是,您必须要小心,因为除非您执行svn up --set-depth,否则将不会添加新文件和目录。