大家好:我正在使用SVNant签出一个存储库,存储库的总内容非常大,我只对几个文件和目录感兴趣,存储库结构如下:
project
folder1
folder2
largefolder
largefile1
largefile2
folder3
fileilike1.txt
fileilike2.txt
file.txt
file2.txt
etc...我只对项目/文件夹下的文件感兴趣,比如file.txt和file2.txt,还有folder3下的所有文件。我不想签出largefolder/,因为其中包含超大文件。
如何编写svnant脚本?我使用了ignore,但似乎不起作用。
发布于 2010-12-31 16:52:54
我没有使用'svnant‘,但我认为它应该类似于'svn’。
下面是如何在svn中执行此操作
svn co project -N-N强制仅签出顶级文件(仅限项目目录中的文件)
然后查看各个目录
svn up dir1 dir2 dir3当您想要更新代码库时,请分两步完成
svn up -N
svn up虽然您可以在更新时进行配置以避免上面提到的步骤1,但上面的配置对您来说应该是完美的。
发布于 2011-01-04 03:52:23
如果您的结帐工作必须如此复杂,也许您可以重新设计项目结构。这些实际上是多个项目吗?我希望你在布局中有分支,标签和主干文件夹,但为了简洁而选择不列出它们?
发布于 2011-01-04 04:50:55
您可以使用各种深度的组合来选择工作目录中所需的内容:
#
# 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,并对您可能需要更新的特定文件执行svn update <file>,而不是保留largefolder。一旦某些内容在您的工作目录中,svn up将保持其更新。但是,您必须小心,因为除非执行svn up --set-depth,否则不会添加新文件和目录。
https://stackoverflow.com/questions/4569011
复制相似问题