使用ANT从SVN签出特定文件夹

时间:2013-07-09 04:28:32

标签: svn ant

我可以使用ANT从SVN签出我的代码。但现在我想只检查一些文件夹,而不是所有文件夹。 假设我的SVN有Folder1,Folder2和Folder3,但我希望只签出Folder1和Folder2。是否有使用ANT的方法?

2 个答案:

答案 0 :(得分:2)

首先提出几个问题。 为何使用蚂蚁?你也可以在COBOL中做到 - 它并不是一个好主意。 一般来说,我发现使用ANT来处理源臭味很糟糕。 ant文件应该在源代码控制中,所以你有鸡/蛋悖论的问题 - 如何在没有代码的情况下查看代码?

为什么要检查项目中的文件夹子集?听起来您可能会从更改存储库的布局中受益。 Folder1,Folder2和Folder3是否应该拥有自己的分支,标签和主干的独特项目?关于svn layout here on SO,有许多不错的问题和答案。通常,如果Folder1和Folder2没有一起发布,那么它们就是不同的svn项目。

现在回答你的问题:你无法使用svnant checkout检查同一级别的目录子集,或使用exec任务调用svn客户端,你必须单独检查for Folder1和Folder2

答案 1 :(得分: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脚本,甚至放在Ant构建文件中:

<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命令。