2013-07-09 27 views
0

我可以使用ANT从SVN检出我的代码。但是现在我想仅对一些文件夹进行结帐,而不是全部。 说我的SVN有Folder1,Folder2和Folder3,但我希望只签出Folder1和Folder2。有使用ANT的方法吗?使用ANT检出SVN中的特定文件夹

回答

2

先问几个问题。 为什么要用蚂蚁?你也可以在COBOL中做到这一点 - 它并不是一个好主意。 一般来说,我发现使用ANT来处理源味道不好。蚂蚁文件应该在源代码控制,所以你有一个鸡/蛋悖论的问题 - 你如何检查代码没有代码?

为什么要检出项目中的文件夹子集?听起来您可能会从更改存储库布局中受益。 Folder1,Folder2和Folder3独特的项目应该有自己的分支,标签和中继?关于svn布局here on SO有一些体面的问题和答案。一般来说,如果Folder1和Folder2不一起发布,它们是不同的svn项目。

现在回答你的问题:你不能在svnant checkout的同一级别检出一部分目录,或者使用exec任务调用svn客户端,你必须为Folder1单独签出结账Folder2

+2

+1完全同意。 ANT文件存在于您的版本控制系统中。保持逻辑简单,否则你会活下去后悔。 –

0

您可以使用Ant来检出您的代码,但我不喜欢这样做。

首先,检查出build.xml的问题,因此您可以运行它来检出其余的代码。如果我的结帐更新build.xml本身呢?

我的观点是,蚂蚁应该用于建设,你让其他工具可以做更好的事情做他们的事情。

做你想做什么,你可以使用以下命令行:,甚至内部的Ant构建文件

svn co --depth=none $REPO_LOCATION 
svn up --set-depth=infinity Folder1 
svn up --set-depth=infinity Folder2 

这可以被放入Windows批处理脚本或一个Unix shell脚本:

<exec executable="svn"> 
    <arg line="co --depth=none ${env.REPO_LOCATION}/> 
<exec/> 
<exec executable="svn" 
    <arg line="up --set-depth=infinity Folder1"/> 
</exec> 
<exec executable="svn" 
    <arg line="up --set-depth=infinity Folder2"/> 
</exec> 

有一个Subversion的ant任务插件,但它可能会很棘手,我相信它只是直接执行SVN命令。

相关问题