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